Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: shin_akuma en 28 Junio 2008, 22:29 pm



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:

Código:

        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:
Código:
 for (j = 0; j <= numa; j++)
debe ser asi
Código:
 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:
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%.

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:

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