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

Título: c# ejercicio for switch conocer números positivos negativos pares impares código
Publicado 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.           


Código: [Seleccionar]
            #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;
Título: Re: c# ejercicio
Publicado por: Kabuto en 14 de Abril 2021, 00:55
Hola.
No, no vas bien.

Nada más empezar, tienes un bucle infinito

Código: [Seleccionar]
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?
Citar
//  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.
Código: [Seleccionar]
        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");
        }
    }