matriz c#

Iniciado por shin_akuma, 28 Junio 2008, 22:29 PM

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

shin_akuma

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:
El conocimiento es poder!!!

Saludos!!



MANULOMM

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


shin_akuma

 ;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
El conocimiento es poder!!!

Saludos!!