Autor Tema: Error Al ejecutar programa en C .exe ha detectado un problema y debe cerrarse  (Leído 3029 veces)

franco7771

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
 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
« Última modificación: 04 de Diciembre 2014, 12:27 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".