Aiuuuda con matrices en C

Iniciado por Ceshi, 16 Abril 2017, 00:24 AM

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

Ceshi

Buenas tardes, tengo este problemilla: El programa -como doce abajo- debe guardar la producción de 10 plantas durante 7 días. el problema es que cuando uso matrices 4x5 , 6x7 todo bien, pero cuando ingreso la de 7 x10 booom! después de la planta #8 la suma ya no me sale...Podría alguien guiarme? por favor Cx ILÚSTRENME MAESTROS...



/* Se tiene la producción de los 7 días de la semana de 10 plantas;
elabora un programa que lea estos datos y los almacene en un arreglo
de 10 renglones para las plantas, en 7 columnas para cada día de
producción, además que imprima el número de planta que tuvo la mayor
producción de la semana*/


#include <stdio.h>
#include <stdlib.h>
#define DIAS_PRODUCCION 7
#define NUM_PLANTAS 10

int main(){

int num_planta,dia, A[NUM_PLANTAS][DIAS_PRODUCCION], sum[DIAS_PRODUCCION], suma;


for(num_planta=0;num_planta<NUM_PLANTAS;num_planta++){
printf("Planta N %d \n", num_planta+1);
for(dia=0;dia<DIAS_PRODUCCION;dia++){
printf("Dia [%d]: ", dia+1);
scanf("%d",&A[num_planta][dia]);
}

}
// Por cuestiones de impresión Cx
printf("\nN PLANTA\t");
for(dia=0; dia<DIAS_PRODUCCION; dia++)
printf("DIA %d\t", dia+1);

printf("TOTAL \n");
//SUMAR PRODUCCION
for(num_planta=0;num_planta<NUM_PLANTAS;num_planta++){
    suma=0;
    for(dia=0;dia<DIAS_PRODUCCION;dia++){
        suma=suma+(A[num_planta][dia]);
    }
    sum[num_planta]=suma;
}
// Para imprimir matriz
for(num_planta=0;num_planta<NUM_PLANTAS;num_planta++){
printf("Planta %d \t", num_planta+1);
for(dia=0;dia<DIAS_PRODUCCION;dia++){
printf(" %d \t", A[num_planta][dia]);
}
printf("%d", sum[num_planta]);
printf("\n");
}

printf("\n");
system("PAUSE");
}


//corregir

n-utz

Es porque el array lo declaraste mal.

Lo declaraste asi >  sum[DIAS_PRODUCCION]

Y deberia ser > sum[NUM_PLANTAS]

MAFUS

Tu declaras:
define DIAS_PRODUCCION 7
#define NUM_PLANTAS 10

// ...
sum[DIAS_PRODUCCION]


Pero después dices:
for(num_planta=0;num_planta<NUM_PLANTAS;num_planta++){
// ...
   sum[num_planta]=suma;


Si sum está vinculada a días de producción no deberías usarla como array de número de planta. Este error, por una parte lógico, se acrecenta cuándo el número de plantas es mayor al número de días.

Ceshi