Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Extravagan en 8 Febrero 2016, 01:13 am



Título: Ayuda con c# y arreglos
Publicado por: Extravagan en 8 Febrero 2016, 01:13 am
Trato de hacer un programa que inserte 10 números, todos mayores a 1000.me los sume y muestre los numeros mayores a 5000

Por el momento no sé como hacer para que me muestre los numeros mayores a 5000

Llevo esto del programa
Código
  1. int[] numero = new int[10];
  2.            int suma;                  
  3.            int cont;
  4.  
  5.  
  6.            for (cont = 0; cont <= 9; cont++)      
  7.            {
  8.                Console.Write("Introduce el dato numero {0}: ", cont + 1);
  9.                numero[cont] = int.Parse(Console.ReadLine());
  10.            }
  11.  
  12.            suma = 0;            
  13.            for (cont = 0; cont <= 9; cont++)
  14.                suma += numero[cont];
  15.  
  16.            Console.WriteLine("Su suma es {0}", suma);
  17.            Console.WriteLine();
  18.  
  19.  
  20.                if (numero[cont] > 5000)
  21.                {
  22.                    Console.WriteLine("{0}", numero);
  23.                    Console.ReadLine();
  24.                }
  25.  
  26.  
  27.  
  28.  
  29.            Console.ReadLine();


No me marca ningun error, pero al momento de ejecutarlo ya me marca el error

Alguna sugerencia?


Título: Re: Ayuda con c# y arreglos
Publicado por: Eleкtro en 8 Febrero 2016, 08:53 am
Cuando formules una pregunta de programación donde te da un error, como mínimo trata de mencionar el tipo de excepción exacta que te muestra el compiler y la linea donde ocurre, es un dato esencial para ahorrarle tiempo a los demás, al ayudarte y analizar el código.

Tienes un Array de 10 elementos y en .Net los índices están basados en Cero por lo que el rango accesible de índices para ese Array es 0-9, pero el valor de cont es 10, esto causa que en la condicional if (numero[cont] > 5000) se exceden los límites posibles del Array al intentar acceder a un elemento inexistente con ese índice 10.

Te sugiero hacerlo de la siguiente manera:
Código
  1. int[] values = new int[10];
  2. int sum = 0;
  3.  
  4. for (int index = 0; index <= (values.Length - 1); index++) {
  5. Console.Write("Introduce el valor [{0}]: ", index + 1);
  6. values[index] = int.Parse(Console.ReadLine());
  7. }
  8. Console.WriteLine();
  9.  
  10. for (int index = 0; index <= (values.Length - 1); index++) {
  11. sum += values(index);
  12. }
  13. Console.WriteLine("La suma de valores es: {0}", sum);
  14. Console.WriteLine();
  15.  
  16. Console.WriteLine("Valores mayores de 5.000:", sum);
  17. foreach (int value in values) {
  18. if ((value > 5000)) {
  19. Console.WriteLine("{0}", value);
  20. }
  21.  
  22. }
  23.  
  24. Console.ReadLine();

Si no se trata de ningún ejercicio, entonces te sugiero usar LINQ para simplificar el código:
Código
  1. int[] values = new int[10];
  2.  
  3. for (int index = 0; index <= (values.Length - 1); index++) {
  4. Console.Write("Introduce el valor [{0}]: ", index + 1);
  5. values[index] = int.Parse(Console.ReadLine());
  6. }
  7. Console.WriteLine();
  8.  
  9. Console.WriteLine("La suma de valores es: {0}", values.Sum());
  10. Console.WriteLine();
  11.  
  12. Console.WriteLine("Valores mayores de 5.000:");
  13. Console.WriteLine(string.Join(Environment.NewLine, from value in values where value > 5000 select value));
  14.  
  15. Console.ReadLine();

Saludos