Ayuda con c# y arreglos

Iniciado por Extravagan, 8 Febrero 2016, 01:13 AM

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

Extravagan

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 (csharp) [Seleccionar]

int[] numero = new int[10];
           int suma;                  
           int cont;

           
           for (cont = 0; cont <= 9; cont++)      
           {
               Console.Write("Introduce el dato numero {0}: ", cont + 1);
               numero[cont] = int.Parse(Console.ReadLine());
           }

           suma = 0;            
           for (cont = 0; cont <= 9; cont++)
               suma += numero[cont];

           Console.WriteLine("Su suma es {0}", suma);
           Console.WriteLine();

           
               if (numero[cont] > 5000)
               {
                   Console.WriteLine("{0}", numero);
                   Console.ReadLine();
               }
           

         

           Console.ReadLine();



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

Alguna sugerencia?

Eleкtro

#1
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 (csharp) [Seleccionar]
int[] values = new int[10];
int sum = 0;

for (int index = 0; index <= (values.Length - 1); index++) {
Console.Write("Introduce el valor [{0}]: ", index + 1);
values[index] = int.Parse(Console.ReadLine());
}
Console.WriteLine();

for (int index = 0; index <= (values.Length - 1); index++) {
sum += values(index);
}
Console.WriteLine("La suma de valores es: {0}", sum);
Console.WriteLine();

Console.WriteLine("Valores mayores de 5.000:", sum);
foreach (int value in values) {
if ((value > 5000)) {
Console.WriteLine("{0}", value);
}

}

Console.ReadLine();


Si no se trata de ningún ejercicio, entonces te sugiero usar LINQ para simplificar el código:
Código (csharp) [Seleccionar]
int[] values = new int[10];

for (int index = 0; index <= (values.Length - 1); index++) {
Console.Write("Introduce el valor [{0}]: ", index + 1);
values[index] = int.Parse(Console.ReadLine());
}
Console.WriteLine();

Console.WriteLine("La suma de valores es: {0}", values.Sum());
Console.WriteLine();

Console.WriteLine("Valores mayores de 5.000:");
Console.WriteLine(string.Join(Environment.NewLine, from value in values where value > 5000 select value));

Console.ReadLine();


Saludos