hola! denuevo
Mire me acaban de dejar una tarea sobre un programa que calcule promedios por medio de arrys el codigo se ejecuta bien pero cuando finaliza me arroja una excepcion : IndexOutOfRangeException
my sourse:
int i = 0, j = 0, filas = 7;
double d;
System.Console.WriteLine("\nEscribe el numero de alumnos");
int numa = Convert.ToInt16(Console.ReadLine());
double[,] table = new double[numa, filas];
for (i = 0; i < numa; i++)
{
Console.WriteLine("ingresa la calificacion de el alumno en español {0}", i + 1 );
table[i, 0] = Int32.Parse(Console.ReadLine());
}
for (i = 0; i < numa; i++)
{
System.Console.WriteLine("Escribe la calificacion de alumno matematicas {0}", i + 1 );
table[i, 1] = Int32.Parse(Console.ReadLine());
}
for (i = 0; i < numa; i++)
{
System.Console.WriteLine("Escribe la calificacion de alumno fisica {0}", i + 1);
table[i, 2] = Int32.Parse(Console.ReadLine());
}
for (i = 0; i < numa; i++)
{
System.Console.WriteLine("Escribe la calificacion de alumno quimica {0}", i + 1);
table[i, 3] = Int32.Parse(Console.ReadLine());
}
for (i = 0; i < numa; i++)
{
System.Console.WriteLine("Escribe la calificacion de alumno geografia {0}", i + 1);
table[i, 4] = Int32.Parse(Console.ReadLine());
}
for (i = 0; i < numa; i++)
{
System.Console.WriteLine("Escribe la calificacion de alumno historia {0}", i + 1);
table[i, 5] = Int32.Parse(Console.ReadLine());
}
Console.Clear();
System.Console.WriteLine("\nLas calificaciones de alumno son:\n\n");
for (j = 0; j <= numa; j++)
{
d = (table[j, 0] + table[j, 1] + table[j, 2] + table[j, 3] + table[j, 4] + table[j, 5]) / 6;//Exception???
table[j, 6] =d;
System.Console.WriteLine("Del alumano {0}\n",j + 1 );
System.Console.WriteLine("Español : {0}" ,table[j,0]);
System.Console.WriteLine("Matematicas : {0}", table[j, 1]);
System.Console.WriteLine("Fisica : {0}", table[j, 2]);
System.Console.WriteLine("Quimica : {0}", table[j, 3]);
System.Console.WriteLine("Geografia : {0}", table[j, 4]);
System.Console.WriteLine("Historia : {0}", table[j, 5]);
if (table[j, 6] <= 6)
{
System.Console.WriteLine("\nEl alumno reprobo con un promedio de: {0}", table[j, 6]);
}
else if (table[j, 6] >= 7)
{
System.Console.WriteLine("\nEl alumno aprobo con un promedio de: {0}",table[j,6]);
}
}
cual es mi error? :-\ :huh:
es de logica, en esta linea:
for (j = 0; j <= numa; j++)
debe ser asi
for (j = 0; j < numa; j++)
pues cuando ingresamos el numero de alumnos ejemplo 2, como empezamos de cero e incluyes el igual serian 3 por lo cual la matriz arroja el error pues se sobrepasa el numero de columnas.
Te aconseja una cosa y es que no hagas esto:
int i = 0, j = 0, filas = 7;
es mejor asi:
int i = 0;
int j = 0;
int filas = 7;
hacerlo como lo tienes no es una buena practica de programacion, es mejor ser explicito al 100%.
Atemtamente,
Juan Manuel Lombana
Medellín - Colombia
;D graxx si exacta el error era en el linea del <= quite el igual y se ejecuto sin niguna bronca
lo de:
Citar
Te aconseja una cosa y es que no hagas esto:
Código:
int i = 0, j = 0, filas = 7;
es mejor asi:
Código:
int i = 0;
int j = 0;
int filas = 7;
hacerlo como lo tienes no es una buena practica de programacion, es mejor ser explicito al 100%.
tienes razon creo que me meti en la cabeza mucho la idea de menor codigo mayor software
bueno graxx