Add row and column values and store in vector

Asked

Viewed 1,550 times

0

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

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

Thought I’d solve the problem this way:

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 do not find the expected values, for example, I type a sequence of 1 to 5, the result should be 15 but it returns me 92... Value far from expected. The code is not ready but I’ll let you see.

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

1 answer

0

In function processaDadosno need to use the variable soma, everything can be done in a very simple way. 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, as they are basic commands of a single line. Always avoid adding "redundate" code, because it will only make it difficult to read the code.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.