Add row and column values and store in vector

0

Good afternoon, I'm doing an algorithm in which I need to store the total sums of each row and each column in different vectors.

For example: vector of 5 positions receives the total of the sum of 5 rows of the matrix, each result stored in a vector position.

I thought about solving the problem as follows:

void processarDados(int matriz[4][5], int vetorA[5], int vetorB[4])
{
    int i, j;
    int soma = 0;

    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 5; j++)
        {
            vetorA[j] = matriz[i][j];  // vetorA armazena os valores das posições [i][j] da matriz até J ou 5;              
            soma = soma + vetorA[j]; // É feito a soma dos valores encontrados no vetorA;
            vetorA[j] = soma; //O resultado da soma é armazenado novamente no mesmo vetor.
        }
    }

But I can not find the expected values, for example, I type a sequence from 1 to 5, the result should be 15 however it returns me 92 ... Value far from expected. The code is not ready but I'll let you see it.

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

    void limparTela();
    void saltarLInha();

    void receberDados(int matriz[4][5]);
    void processarDados(int matriz[4][5], int vetorA[4], int vetorB[5]);
    void resultadoDados(int matriz[4][5], int vetorA[4], int vetorB[5]);

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

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

        receberDados(matriz);
        processarDados(matriz, vetorA, vetorB);
        resultadoDados(matriz, vetorA, vetorB);

        return 0;      

    }

    void limparTela()
    {
        system("cls");
    }

    void saltarLInha()
    {
        printf("\n");
    }

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

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

    void processarDados(int matriz[4][5], int vetorA[5], int vetorB[4])
    {
        int i, j;
        int soma = 0;

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

    void resultadoDados(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++)
            {
                printf("[%i] ", matriz[i][j]);
            }

            saltarLInha();

        }



        for(i = 0; i < 5; i++)
        {
            printf("[%i] ", vetorA[i]);
        }
    }
    
asked by anonymous 03.01.2018 / 19:02

1 answer

0

In the processaDados function there is no need to use the soma variable, everything can be done very simply. For example:

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

The functions limparTela and saltarLinha also do not need to exist, since they are basic commands of a single line. Avoid always adding "redundate" code, because it will only make it difficult to read the code.

    
03.01.2018 / 20:10