Título: matriz c#
Publicado por: shin_akuma en 28 Junio 2008, 22:29 pm
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:
Título: Re: matriz c#
Publicado por: MANULOMM en 29 Junio 2008, 05:04 am
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
Título: Re: matriz c#
Publicado por: shin_akuma en 30 Junio 2008, 22:06 pm
;D graxx si exacta el error era en el linea del <= quite el igual y se ejecuto sin niguna bronca lo de: 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
|