none
Programa Basico. RRS feed

  • Pregunta

  • Hola un saludo,

    Si alguien me puede ayudar con el siguiente problema:

    Diseñe una solución básica con POO que permita resolver: la suma de 15 números enteros superiores a 50 e inferiores a 500.

    He realizado este pequeño codigo sin embargo el resultado no es el esperado no se donde esta el error o estoy en el camino equivocado.

    namespace calcular50A500
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n, sumar;
                string texto;

                Console.Write("Ingrese N1: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N2: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N3: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N4: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N5: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N6: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N7: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N8: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N9: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N10: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N11: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N12: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N13: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N14: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N15: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                if (n >= 50)
                {
                    Console.Write(sumar = n + n + n + n + n + n + n + n + n + n + n + n + n + n + n);
                }
                 if(n <= 500)
                {
                    Console.Write(sumar = n + n + n + n + n + n + n + n + n + n + n + n + n + n + n);
                }
                else
                {
                    Console.WriteLine("\nSe han sumado los numeros enteros entre 50 y 500");
                }

                Console.WriteLine("\nPresiona cualquier tecla para finalizar");
                Console.ReadLine();
            }

    martes, 30 de marzo de 2021 2:52

Todas las respuestas

  • El error está en que en todos los sitios utilizas la variable n. Eso hace que cada vez que preguntas por un nuevo número te sobreescriba el anterior contenido de n, por lo que al final de todos los Console.ReadLine, la variable n contiene el N15, y todos los anteriores se han perdido.

    La solución más sencilla, en el sentido de que supone los mínimos cambios en tu código, es cambiar todas las n por variables diferentes, por ejemplo, n1, n2, n3... La solución "elegante" es usar un array y un bucle, en lugar usar de variables separadas repitiendo 15 veces el mismo código.

    Por cierto, los "if" que tienes al final no valen para comprobar si los números están entre 50 y 500. Si quieres validar que los números estén en el rango correcto, tienes que verificar una por una cada una de las 15 variables. Esto es pesadísimo si repites el código 15 veces como estás haciendo ahora, pero si lo sustituyes por un bucle entonces solo necesitarás escribir esta comprobación una única vez.

    martes, 30 de marzo de 2021 6:16
    Moderador
  • En tu caso puedes usar Switch.

    https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/switch


    http://electronica-pic.blogspot.com

    martes, 30 de marzo de 2021 6:16
  • Hola Juán,

    ¿Alguna novedad sobre la consulta realizada?

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 30 de marzo de 2021 14:03
    Moderador
  • Hola un saludo,

    Si alguien me puede ayudar con el siguiente problema:

    Diseñe una solución básica con POO que permita resolver: la suma de 15 números enteros superiores a 50 e inferiores a 500.

    He realizado este pequeño codigo sin embargo el resultado no es el esperado no se donde esta el error o estoy en el camino equivocado.

    namespace calcular50A500
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n, sumar;
                string texto;

                Console.Write("Ingrese N1: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N2: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N3: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N4: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N5: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N6: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N7: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N8: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N9: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N10: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N11: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N12: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N13: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N14: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                Console.Write("Ingrese N15: ");
                texto = Console.ReadLine();
                n = int.Parse(texto);

                if (n >= 50)
                {
                    Console.Write(sumar = n + n + n + n + n + n + n + n + n + n + n + n + n + n + n);
                }
                 if(n <= 500)
                {
                    Console.Write(sumar = n + n + n + n + n + n + n + n + n + n + n + n + n + n + n);
                }
                else
                {
                    Console.WriteLine("\nSe han sumado los numeros enteros entre 50 y 500");
                }

                Console.WriteLine("\nPresiona cualquier tecla para finalizar");
                Console.ReadLine();
            }

    Hola a todos,

    He avanzado un poco en el código sin embargo al final se suman todos los valores, y solo quiero que se sumen los valores que estén entre 50 y 500.

    Muchas gracias.

            static void Main(string[] args)
            {
                int n1, n2, n3,sumar;
                string texto;


                Console.Write("Ingrese 1er numero: ");
                texto = Console.ReadLine();
                n1 = int.Parse(texto);

                if(n1 >= 50 && n1 <= 500)
                {

                }
                else
                {
                    Console.Write("Solo ingresar valores de 50 a 500 - Click para continuar");
                    Console.ReadLine();
                }

                Console.Write("Ingrese 2do numero: ");
                texto = Console.ReadLine();
                n2 = int.Parse(texto);

                if (n2 >= 50 && n2 <= 500)
                {

                }
                else
                {
                    Console.Write("Solo ingresar valores de 50 a 500 - Click para continuar");
                    Console.ReadLine();
                }

                Console.Write("Ingrese 3er numero: ");
                texto = Console.ReadLine();
                n3 = int.Parse(texto);

                if (n3 >= 50 && n3 <= 500)
                {

                }
                else
                {
                    Console.Write("Solo ingresar valores de 50 a 500 - Click para continuar");
                    Console.ReadLine();
                }

                Console.Write("\nLa suma de los valores entre 50 y 500 es: " + (sumar = n1 + n2 + n3));

                Console.WriteLine("\n\nPresione cualquier tecla para finalizar");
                Console.ReadLine();


    lunes, 5 de abril de 2021 22:49
  • [...] al final se suman todos los valores, y solo quiero que se sumen los valores que estén entre 50 y 500.

    Bueno, lo que pasa es que por cada número compruebas si está entre 50 y 500... pero si no está entre esos valores no haces nada para evitarlo, sino que continúas procesado como si tal cosa, igual que si el número hubiese estado dentro del rango requerido. Bueno, sí, escribes un mensaje diciendo que no está dentro del rango, pero aparte de escribir el mensaje no haces nada, te quedas con el número tenga el valor que tenga y sigues adelante. Por lo tanto, el número se suma, con independencia del valor que tenga.

    Si quieres una solución rápida y sencilla, métele un cero al número cuando no esté dentro de rango, por ejemplo:

                else
                {
                    Console.Write("Solo ingresar valores de 50 a 500 - Click para continuar");
                    Console.ReadLine();
                    n3 = 0;
                }

    Aquí he usado n3, pero por supuesto en cada uno de los casos tienes que poner la variable que le corresponda.

    • Marcado como respuesta EricRRModerator miércoles, 7 de abril de 2021 14:05
    • Desmarcado como respuesta EricRRModerator miércoles, 7 de abril de 2021 14:05
    • Propuesto como respuesta EricRRModerator miércoles, 7 de abril de 2021 14:05
    martes, 6 de abril de 2021 5:56
    Moderador