Validar ingreso correcto con mensaje en consola...

Iniciado por DanielPy, 12 Mayo 2013, 22:12 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

Hola a todos.
Desconozco si esto se puede hacer por eso los consulto.-
do
{
Console.SetCursorPosition(mLeft, mTop);
Console.Write("Ingrese la cantidad de números a comparar(máximo 255)...:");
} while (!byte.TryParse(Console.ReadLine(), out n));

Si se ingresa por ejemplo una letra el mismo es incorrecto, puedo en este caso mostrar un mensaje de ayuda y como?.-
El código lo expongo completo porque considero que tal vez alguna cosita puede ayudarle a algún principiante como yo.-

using System;
using System.Collections.Generic;
using System.Text;

namespace MayorMenor
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Mostrar el mayor y el menor de un grupo de números...";
Console.SetWindowSize(70, 30);
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Clear();

byte n = 0, i = 0, mLeft = 2, mTop = 2;
int numero = 0, menor = 99, mayor = -99;

do
{
Console.SetCursorPosition(mLeft, mTop);
Console.Write("Ingrese la cantidad de números a comparar(máximo 255)...:");
} while (!byte.TryParse(Console.ReadLine(), out n));

mTop += 2;

for (; i < n; i++)
{

do
{
Console.SetCursorPosition(mLeft, mTop);
Console.Write("numero " + (i + 1) + "...:");
} while (!Int32.TryParse(Console.ReadLine(), out numero));

if (mayor < numero)
{
mayor = numero;
}

if (menor > numero)
{
menor = numero;
}
mTop++;
}

mTop += 2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("El número menor es...: " + menor);
mTop++;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("El número mayor es...: " + mayor);

mTop += +2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("Apriete una tecla para cerrar la aplicación...");
Console.ReadKey();
}
}
}


Gracias pero muchas grtacias DarK_FirefoX

Saludos.
Daniel



abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

DarK_FirefoX

#1
Mira aqui tu solución al problema. El problema es que el método TryParse, devuelve bool y sale una variable por un parámetro OUT, es simple controlar si el método te da false puedes hacer algo...

pd: me volví loco con todos los Console.SerCursorPosition porque casi nunca he usado eso...ah, y recuerda usar las etiquetas CODE para poner el código.

Código (csharp) [Seleccionar]

static void Main(string[] args)
        {
Console.Title = "Mostrar el mayor y el menor de un grupo de números...";
           Console.SetWindowSize(70, 30);
           Console.BackgroundColor = ConsoleColor.Blue;
           Console.ForegroundColor = ConsoleColor.Yellow;
           Console.Clear();

           byte n = 0, i = 0, mLeft = 2, mTop = 2;
           int numero = 0, menor = 99, mayor = -99;

//Modifiqué esto...
           while (true)
           {
               Console.SetCursorPosition(mLeft, mTop);
               Console.Write("Ingrese la cantidad de números a comparar(máximo 255)...:");
               if (byte.TryParse(Console.ReadLine(), out n))
                   break; //Si pudo hacerle PARSE sale del ciclo while
               else
               {
                   mTop+=2;
                   Console.SetCursorPosition(mLeft, mTop);
                   Console.WriteLine("TU MENSAJE DE AYUDA AQUI EJ> INGRESASTE UN NUMERO INCORRECTO");
                   mTop += 2;
               }
           }
           
           mTop += 2;

           for (; i < n; i++)
           {
//Modifiqué esto
               while (true)
               {
                   Console.SetCursorPosition(mLeft, mTop);
                   Console.Write("numero " + (i + 1) + "...:");
                   if (Int32.TryParse(Console.ReadLine(), out numero))
                       break; //Si pudo hacerle PARSE sale del ciclo while
                   else
                   {
                       mTop += 2;
                       Console.SetCursorPosition(mLeft, mTop);
                       Console.WriteLine("TU MENSAJE DE AYUDA AQUI EJ> INGRESASTE UN NUMERO INCORRECTO");
                       mTop += 2;
                   }
               }
               if (mayor < numero)
               {
                   mayor = numero;
               }
               if (menor > numero)
               {
                   menor = numero;
               }
               mTop++;
           }
           mTop += 2;
           Console.SetCursorPosition(mLeft, mTop);
           Console.Write("El número menor es...: " + menor);
           mTop++;
           Console.SetCursorPosition(mLeft, mTop);
           Console.Write("El número mayor es...: " + mayor);

           mTop += +2;
           Console.SetCursorPosition(mLeft, mTop);
           Console.Write("Apriete una tecla para cerrar la aplicación...");
           Console.ReadKey();

       }

DanielPy

Hola amigo.
Muchas gracias, excelente solución, en cuanto a SetCursorPosition y las otras cositas yo las uso en todas mis prácticas, soy un capricorniano perfeccionista.-
Citar...recuerda usar las etiquetas CODE para poner el código.
Siempre las uso.- :huh:

Bueno un gran abrazo.-
Daniel.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

DanielPy

Hola.
Funciona como lo esperado, el que posteo en este caso tiene una pequeña modificación de estética.-

using System;
using System.Collections.Generic;
using System.Text;

namespace MayorMenor
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Mostrar el mayor y el menor de un grupo de números...";
Console.SetWindowSize(70, 30);
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Clear();

byte n = 0, i = 0, mLeft = 2, mTop = 2;
int numero = 0, menor = 99, mayor = -99;

while (true)
{
Console.SetCursorPosition(mLeft, mTop);
Console.Write("Ingresa la cantidad de números a comparar(máximo 255)...:");
if (byte.TryParse(Console.ReadLine(), out n))
break; //Si pudo hacerle PARSE sale del ciclo while
else
{
mTop += 2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("INGRESO INCORRECTO Puse una tecla para continuar...");
Console.ReadKey();
Console.SetCursorPosition(mLeft, mTop);
Console.Write("                                                     ");
mTop -= 2;
}
}

mTop += 2;
Console.SetCursorPosition(mLeft, mTop);

for (; i < n; i++)
{

while (true)
{
Console.SetCursorPosition(mLeft, mTop);
Console.Write("numero " + (i + 1) + "...:");
if (Int32.TryParse(Console.ReadLine(), out numero))
break; //Si pudo hacerle PARSE sale del ciclo while
else
{
mTop += 2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("INGRESO INCORRECTO Puse una tecla para continuar...");
Console.ReadKey();
Console.SetCursorPosition(mLeft, mTop);
Console.Write("                                                     ");
mTop -= 2;
}
}

if (mayor < numero) {mayor = numero;}

if (menor > numero) {menor = numero;}
mTop++;
}

mTop += 2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("El número menor es...: " + menor);
mTop++;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("El número mayor es...: " + mayor);

mTop += +2;
Console.SetCursorPosition(mLeft, mTop);
Console.Write("Pulse una tecla para cerrar la aplicación...");
Console.ReadKey();
}
}
}

Saludos.
Daniel


abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-