Hola, buenas tardes,
El siguiente programa intenta sumar dos matrices de 2x2.
El problema se da que devuelve cualquier resultado, menos la suma.
Gracias!
#include <stdio.h>
#include <stdlib.h>
#define COL 1
#define FIL 1
void ingresarMatriz (int[][COL]);
void sumarMatriz (int[][COL], int[][COL], int[][COL]);
void mostrarMatriz (int[][COL]);
int main()
{
system ("color 0a");
int matrizA[FIL][COL],
matrizB[FIL][COL],
matrizC[FIL][COL];
printf("\t\tDATOS PRIMERA MATRIZ:\n");
ingresarMatriz(matrizA);
printf("\t\tDATOS SEGUNDA MATRIZ:\n");
ingresarMatriz(matrizB);
sumarMatriz(matrizA, matrizB, matrizC);
printf("\t\tMATRIZ FINAL:\n");
mostrarMatriz(matrizC);
return 0;
}
void ingresarMatriz (int matriz[][COL])
{
int i,
j;
for(i=0;i<=FIL;i++)
{
for(j=0;j<=COL;j++)
{
scanf("%d",&matriz[i][j]);
}
}
}
void sumarMatriz (int matriz1[][COL], int matriz2[][COL], int matriz3[][COL])
{
int i,
j;
for(i=0;i<=FIL;i++)
{
for(j=0;j<=COL;j++)
{
matriz3[i][j] = matriz1[i][j] + matriz2[i][j];
}
}
}
void mostrarMatriz (int matriz3[][COL])
{
int i,
j;
for(i=0;i<=FIL;i++)
{
for(j=0;j<=COL;j++)
{
printf("\n%d\n",matriz3[i][j]);
}
}
}
En los for, en la condición de continuidad, en vez de usar el comparador <= debes usar el comparador <. No debes llegar al valor máximo de la dimensión. Recuerda que empiezas por 0, no por 1.
Hola,
Si uso los DEFINE FIL 1 y COL 1, ya pacta que que los for's vayan de 0 a 1 (es decid, dos elementos)
¿O me estoy equivocando?
Gracias!
Estás equivocado.
En cuánto declaras, por ejemplo int array[1], estás diciendo que quieres un array de 1 elemento, y tal y como cuenta C sólo es válido el elemento array[0].
Si quisieras un elemento array[1] ya son 2 elementos que se deben poder guardar, el array[0] y array[1], por lo que deberías declararlo como int array[2].
Ya funciono. Era como vos decías.
Muchisimas gracias!!