Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

DÚVIDA EM RELAÇÃO A UM PROGRAMA EM LINGUAGEM C

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

FIZ UM PROGRAMA PARA SOMAR DUAS MATRIZES 3 X 5. QUANDO COMPILA MOSTRA A MENSAGEM QUE A SOMA É ZERO. CREIO QUE HAJA UM ERRO NA FUNÇÃO SOMA. SE ALGUÉM PUDER ME AJUDAR, DESDE JÁ AGRADEÇO. E PARABÉNS PELO CURSO C PROGRESSIVO E PELA DICA DE USAR O CODE::BLOCKS, GOSTEI MUITO.


#include <stdio.h>


void Leitura1(int Mat[][5])
{
int i, j, LIN=3, COL=5;
for(i=0; i<LIN; i++)
for(j=0; j<COL; j++)
{
printf("Entre com elememto matriz[%d][%d]: ", i+1, j+1);
scanf("%d", &Mat[i][j]);
}
}

void Exibe1(int M[][5])
{
int x, y, LIN=3, COL=5;
for(x=0; x<LIN; x++)
{
for(y=0; y<COL; y++)
printf("%3 5d", M[x][y]);
printf("\n");
}
}

void Leitura2(int A[][5])
{
int i, j, LIN=3, COL=5;
for(i=0; i<LIN; i++)
for(j=0; j<COL; j++)
{
printf("Entre com elememto matriz[%d][%d]: ", i+1, j+1);
scanf("%d", &A[i][j]);
}
}

void Exibe2(int B[][5])
{
int x, y, LIN=3, COL=5;
for(x=0; x<LIN; x++)
{
for(y=0; y<COL; y++)
printf("%5d", B[x][y]);
printf("\n");
}
}

int MSoma(int M1[3][5], int M2[3][5])
{
int l, c, LIN=3, COL=5, Soma=0;
printf("SOMANDO AS DUAS MATRIZES");
for(l=0; l<LIN; l++)
{
for(c=0; c<COL; c++)
{
if(M1[l][c] == M2[l][c])
Soma += M1[l][c] + M2[l][c];

}
}
return Soma;
}

int main()
{
int A[3][5], B[3][5];
Leitura1(A);
Leitura2(B);
Exibe1(A);
Exibe2(B);
printf("\n\nA soma das matrizes = %d", MSoma(A, B));
printf("\n\n");
return 0;
}

Ver perfil do usuário
Bom, acredito que o erro esteja no teste if dentro do segundo for. Do jeito que você escreveu a soma só vai acontecer se os elementos das matrizes forem iguais nas mesmas posições.

Ex: se M1[1][1] for igual a M2[1][1], aí soma - e só assim.

Logo, se você informar números diferentes nas mesmas posições das matrizes, nenhuma soma acontece e o resultado acaba sendo zero.

Código:
int MSoma(int M1[3][5], int M2[3][5])
{
    int l, c, LIN=3, COL=5, Soma=0;
    printf("SOMANDO AS DUAS MATRIZES");
    for(l=0; l<LIN; l++)
    {
        for(c=0; c<COL; c++)
        {
            if(M1[l][c] == M2[l][c])   // aqui
                Soma += M1[l][c] + M2[l][c];
        }
    }
    return Soma;
}

Se você retirar o teste if, a soma ocorrerá sem restrições.

Nâo testei, não, mas acho que é isso mesmo. Very Happy

Ver perfil do usuário

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum