GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Armazenar soma de linhas de matriz em vetor

Tags: #<Tag:0x00007f2453073798> #<Tag:0x00007f2453073608>

Boa noite a todos.

Estou preso em na seguinte questão:

Dada uma matriz de 4 x 5 elementos inteiros, calcular a soma de cada linha, de cada coluna e de todos os seus elementos.
Obs: Utilize um vetor para armazenar o resultado da soma de cada linha e outro para a soma de cada coluna.

Então o programa pede o seguinte:

12345 = [15]
67890 = [30]
98765 = [35]
43212 = [12]

Armazenar a soma de cada linha da matriz em um vetor: VetorLinha[4] onde = [15], [30], [35], [12] estariam armazenados.
Eis o meu código:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

    void receberMatriz(int matriz[4][5]);
    void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]);
    void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]);

    int main(void)
    {
        setlocale(LC_ALL, "");

        int matriz[4][5];
        int vetorA[5];
        int vetorB[4];

            receberMatriz(matriz);
            processarMatriz(matriz, vetorA, vetorB);
            resultadoMatriz(matriz, vetorA, vetorB);
        
        return 0;
    }

    void receberMatriz(int matriz[4][5])
    {
        int i, j;

        for(i = 0; i < 4; i++)
        {
            for(j = 0; j < 5; j++)
            {
                printf("Insira valor posição [%i][%i]: ", i, j);
                scanf("%i", &matriz[i][j]);
            }
        }
    }

    void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4])
    {
        int i, j;

        for(i = 0; i < 4; i++)
        {
            for(j = 0; j < 5; j++)
            {
                vetorA[j] = matriz[i][j];
                soma = soma + vetorA[j];
                vetorA[j] = soma;
            }
        }

        for(j = 0; j < 5; j++)
        {
            for(i = 0; i < 4; i++)
            {
                vetorB[i] = matriz[j][i];
                soma = soma + vetorB[i];
                vetorB[i] = soma;
            }
        }
        
    }

    void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4])
    {
        int i, j;

    }

Claramente eu não alcancei a lógica e queria entender como eu faria esse algoritmo. Não sei o que devo fazer para concluir com êxito nessa parte do código:

void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4])
    {
        int i, j;

        for(i = 0; i < 4; i++)
        {
            for(j = 0; j < 5; j++)
            {
                vetorA[j] = matriz[i][j];
                soma = soma + vetorA[j];
                vetorA[j] = soma;
            }
        }

        for(j = 0; j < 5; j++)
        {
            for(i = 0; i < 4; i++)
            {
                vetorB[i] = matriz[j][i];
                soma = soma + vetorB[i];
                vetorB[i] = soma;
            }
        }
        
    }

Após pensar um pouco, eu acho que você se equivocou apenas na parte de realizar a soma, apesar de não ter testado eu creio que o código abaixo resolve seu problema.

int i, j;
for(i = 0; i < 4; i++) {
   for(j = 0; j < 5; j++ {
       vetorA[j] += matriz[i][j];
       vetorB[i] += matriz[i][j];
   }
}
//