Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: lau1 en 13 de Abril 2021, 16:02
-
Hola!! tengo un duda de un ejercicio que me dieron sobre "for - switch" y quería saber si lo estaba haciendo bien
// 2) Realizar un programa que permita ingresar n números enteros por el teclado y se desea conocer:
// a) La cantidad de números positivos.
//b) La cantidad de números negativos.
// c) La cantidad de números pares.
// d)La cantidad de números impares
//nota: 0 no cuenta ni como positivo ni como negativo.
#endregion
int par = 0;
int impar = 0;
string respuesta = "si";
int numConver;
string numerIngre;
do
{
Console.WriteLine("Ingrese numero");
numerIngre = Console.ReadLine();
} while (respuesta == "si");
{
Console.WriteLine("¿Quiere ingresar otro numero?");
numerIngre = Console.ReadLine();
}
switch (numerIngre)
{
case "a": //numeros positivos
for (int i = 0; i < 100; i++)
{
}
int.TryParse(numerIngre, out numConver);
break;
case "b": //numeros negativos
for (int i = 0; i < 100; i-=1)
{
}
int.TryParse(numerIngre, out numConver);
break;
case "c": //numeros pares
int.TryParse(numerIngre, out numConver);
for (int i = 0; i < 100; i+=2)
{
}
break;
case "d": //numeros impares
int.TryParse(numerIngre, out numConver);
for (int i = 0; i < 100; i++)
{
}
break;
-
Hola.
No, no vas bien.
Nada más empezar, tienes un bucle infinito
do
{
Console.WriteLine("Ingrese numero");
numerIngre = Console.ReadLine();
} while (respuesta == "si");
Esto se repite mientras respuesta sea igual a "si".
Pero como dentro del bucle, en ningún momento se altera el valor de respuesta, pues su valor SIEMPRE va a ser "si", así que el bucle se va a repetir infinitamente.
Luego, a parte de esto, eso de un switch que pregunta por "a", "b", "c"...
¿Por qué? ¿Por que así se enumeran las tareas en el enunciado?
// a) La cantidad de números positivos.
//b) La cantidad de números negativos.
// c) La cantidad de números pares.
Eso no tiene nada que ver con la lógica que ha de seguir el programa.
Ni pintan nada esos bucle for que van de 0 a 100..
La lógica a seguir sería:
- Pedir número.
- Si no es 0, comprobar si es negativo o positivo.
Si es negativo se incrementa un contador de negativos, si es positivo pues se incrementa un contador de positivos
-Comprobar si es par o impar e incrementar los contadores correspondientes.
- Preguntar si se quiere continuar si/no
-Repetir todo esto en un bucle mientras la respuesta a continuar sea "si".
- Cuando la respuesta sea "no", el bucle termina y entonces se muestra en pantalla los valores de los contadores.
El código podría ser como el que pondré a continuación.
Pruébalo, revisa los comentarios, asegurate de que entiendes cada línea, cada instrucción...
Cualquier cosa que no entiendas, o te parezca extraña o lo que sea, no dudes en preguntarlo y te lo explicaremos. ;)
Un saludo.
static void Main(string[] args)
{
//contadores
int contPares = 0, contImpares = 0, contPositivos = 0, contNegativos = 0;
//Variable para recoger lectura por teclado
int valor;
//Variable para consultar si desea continuar
string respuesta;
do
{
Console.Clear();
//Pedimos valor
Console.Write("Introduzca valor numerico: ");
valor = int.Parse(Console.ReadLine());
//Si no es un 0, comprobamos si es positivo o negativo
if (valor != 0)
{
if (valor > 0) //Positivo
contPositivos++;
else //Negativo
contNegativos++;
}
//Ahora comprobamos si es par. Un número es par si al dividir entre 2, su resto es 0 (usamos operador módulo)
if (valor % 2 == 0) //Es par
contPares++;
else //Es impar
contImpares++;
//Evaluaciones completadas, preguntamos si quiere introducir otro número
Console.Write("\nDesea ingresar otro número?[si/no]: ");
respuesta = Console.ReadLine();
} while (respuesta.Equals("si"));
//Usuario ha terminado de ingresar valores. Mostramos resultados
Console.Clear();
Console.WriteLine("Numeros POSITIVOS ingresados: " + contPositivos);
Console.WriteLine("Numeros NEGATIVOS ingresados: " + contNegativos);
Console.WriteLine("Numeros PARES ingresados: " + contPares);
Console.WriteLine("Numeros IMPARES ingresados: " + contImpares);
Console.WriteLine("\n\t\tFIN DE PROGRAMA");
}
}