[ Foro de C# ]

Este codigo que simula un elevador de 12 pisos, no funciona como deberia.

26-Jul-2019 17:47
JosmerB. Suero
0 Respuestas

Tengo este codigo que simula un elevador de 12 pisos, y entonces no me esta funcionando como deberia, no tiene errores ( si no me equivoco ) pero al correrlo repite la misma pregunta, Aqui abajo el codigo:

internal class Program
{
    private const string QUIT = "q";

    public static void Main(string[] args)
    {
        Console.WriteLine("Sientase bienvenido al edificio Josmer");
        Elevator ascensor = new Elevator();

        string input = string.Empty;
        while (input != QUIT)
        {
            Console.WriteLine("Por favor, presione al piso que usted desea ir");
            input = Console.ReadLine();

            if (int.TryParse(input, out int piso))
                ascensor.FloorPress(piso);
            else if (input == QUIT)
                Console.WriteLine("Adiocito!");
            else
                Console.WriteLine("Ese piso no existe, presione nuevamente!");
         }
    }
}

public class Elevator
{
    private const int pisofinal = 12;
    private int _actual = 1;

    public void FloorPress(int piso)
    {
        if (piso < 1 || piso > 12)
           Console.WriteLine("Solo 1 al 12 o q para salir");
           return;
        if (piso - _actual < 0 && _actual > 1)
            bajar(piso);
        else if (piso - _actual > 0 && _actual < pisofinal)
            subir(piso);
        else
            Stop(piso);
    }

    private void subir(int piso)
    {
        for (int i = _actual; i <= piso; i++)
        {
            Console.WriteLine($"Subiendo...{i}");
            Thread.Sleep(500);
        }
        Stop(piso);
    }

    private void bajar(int piso)
    {
        for (int i = _actual; i >= piso; i--)
        {
            Console.WriteLine($"Bajando...{i}");
            Thread.Sleep(500);
        }
        Stop(piso);
    }

    private void Stop(int piso)
    {
        _actual = piso;
        Console.WriteLine("Estamos en el piso {0}", piso);
    }
}
Modificar mensaje




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)