Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: franco7771 en 03 de Diciembre 2014, 17:00

Título: Error Al ejecutar programa en C .exe ha detectado un problema y debe cerrarse
Publicado por: franco7771 en 03 de Diciembre 2014, 17:00
 Buenas. Hice un programa que pone una matriz en 0, la llena por teclado y la imprime (SOLO si el campo que analiza no es 0). El asunto es que ejecuta todo lo mas bien, pero cuando termina de mostrar el ultimo campo lleno, aparece el clasico mensaje "Nombre.exe ha detectado un problema y debe cerrarse".
 Trate de analizarlo y buscarle el error pero no lo puedo encontrar. Si me dan una mano estaria agradecido de mil maneras.
 Aqui el codigo:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

/*******************************F U N C I O N E S**************************************/

int CereoMatriz(int Super[][40]);
int CargoMatriz(int Super[][40]);
int MostrarMatriz(int Super[][40]); //MOSTRAR UNICAMENTE LOS ESPACIOS QUE TIENEN ALGO ESCRITO
int CereoVector(int Vect[], int Max);


int main()
{
    int Super[120][40];
    CereoMatriz(Super);
    CargoMatriz(Super);
    MostrarMatriz(Super); //MOSTRAR UNICAMENTE LOS ESPACIOS QUE TIENEN ALGO ESCRITO
    system("pause");

    return 0;
}

/*******************************F U N C I O N E S**************************************/

/**C E R E O   M A T R I Z**/

int CereoMatriz(int Super[][40])
{
int i, j;

for(i = 0; i <=120 ; i ++){
    for (j = 0; j <=40 ; j ++)
    Super[i][j]=0;
    }
return 0;
}

/***************************************************************************************/

/**C A R G O   M A T R I Z**/

int CargoMatriz(int Super[][40]){


int prod, columna, fila;
    printf("\nIngrese su sucursal (Ingrese sucursal 0 para terminar):  ");
        fflush(stdin);
        scanf("%d",&columna);
while(columna!=0){
        printf("\nIngrese el numero del producto que quieres:  ");
        fflush(stdin);
        scanf("%d",&fila);
    printf("\nOk, ahora ¿Cuantos productos deseas?  :");
        fflush(stdin);
        scanf("%d",&prod);

    Super[fila-1][columna-1]+=prod;

    printf("\nIngrese su sucursal (Ingrese sucursal 0 para terminar):  ");
        fflush(stdin);
        scanf("%d",&columna);
}
return 0;

}//FIN DE FUNCION

/***************************************************************************************/

/**M O S T R A R    M A T R I Z**/ //MOSTRAR UNICAMENTE LOS ESPACIOS QUE TIENEN ALGO ESCRITO
int MostrarMatriz (int Super[][40]){
int i, j;

for ( i = 0 ; i <= 120 ; i++)
    for ( j = 0 ; j <= 40 ; j ++){
        if (Super[i][j]!=0)
            printf("\n\nSucursal   %d:   %d",j+1, Super[i][j]);
        }
return 0;
}//FIN DE FUNCION
Título: Re:Error Al ejecutar programa en C .exe ha detectado un problema y debe cerrarse
Publicado por: Ogramar en 04 de Diciembre 2014, 12:30
Hola! Creo que no estás usando bien los índices de los arrays. Las condiciones que estás usando en los bucles for son <= pero deben ser < ya que los índices van desde 0 hasta el número anterior de la dimensión establecida.

for(i = 0; i <120 ; i ++){                 -- > CORRECTO

for(i = 0; i <=120 ; i ++){                  -- > INCORRECTO

Pruébalo y nos cuentas si te funciona (ten cuidado de revisar todos los bucles).

Salu2