• Jueves 18 de Abril de 2024, 17:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Josmer12j

Páginas: [1]
1
C# / Este codigo no me corre como deberia
« en: Lunes 22 de Julio de 2019, 21:21 »
Este codigo deberia ser, como un elevador de 12 pisos, y me debe pedir a que piso debe ir y si es uno mal me diga que no, pero cuando ingreso el piso me repite la pregunta.

Aqui el codigo:

Código: [Seleccionar]
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);
     }
 }

Páginas: [1]