Problema en suma de matrices

Iniciado por NicolasPileci, 18 Octubre 2016, 21:29 PM

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

NicolasPileci

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]);
        }
    }
}

MAFUS

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.

NicolasPileci

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!

MAFUS

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].

NicolasPileci

Ya funciono. Era como vos decías.

Muchisimas gracias!!