aula 149

Procedimento para imprimir uma matriz. Função para somar uma linha da matriz

Nesta aula vamos aprender como fazer um procedimento para imprimir uma matriz e uma função para somar uma linha da matriz. Para preencher nossa matriz irei gerar números aleatórios, então recomendo fortemente que você veja (ou reveja caso não se lembre) as aulas 103 e 104.

Aula 103: Como gerar números aleatórios com as funções rand() e srand().

Aula 104: Como gerar números aleatórios dentro de um intervalo específico.

Procedimento para imprimir uma matriz (array bidimensional)

Como já vimos, um procedimento não tem retorno e, para imprimir uma matriz na tela não precisamos retornar nada, apenas imprimir dados na tela.

Como nossa matriz é uma estrutura de dados declarada na função main, precisamos passar essa estrutura de dados como parâmetro para conseguir acessa-la em nosso procedimento.

Como uma matriz (array bidimensional) possui duas dimensões, linhas e colunas, podemos omitir a quantidade de linhas, mas somos obrigados a informar a quantidade de colunas que terá nossa matriz. Se omitirmos os dois valores o computador não tem como descobrir quais as dimensões da matriz.

Dentro do procedimento precisamos de duas repetições para acessar cada posição da estrutura, obter o dado e então imprimir o valor na tela.

Função para somar uma linha da matriz

Perceba que agora o problema é outro. Queremos somar os elementos de uma linha da matriz e retornar o resultado desta soma, por isso será uma funão.

Da mesma forma que no caso anterior, somos obrigados a informar a quantidade de colunas da matriz e, além da matriz, recebemos um segundo parâmetro, um número inteiro que representa o índice da linha que desejamos somar.

Agora que temos acesso à matriz e sabemos qual linha desejamos somar, precisamos apenas de uma repetição para percorrer as colunas da linha a ser somada. Ao final, o resultado da soma é retornado para quem chamar a função.

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

int tam = 5;

// procedimento para imprimir uma matriz
void imprimir(int m[][5]){
    int i, j;
    for(i = 0; i < tam; i++){
        for(j = 0; j < tam; j++){
            printf("%2d ", m[i][j]);
        }
        printf("\n");
    }
}

// função que calcula e retorna a soma de uma linha da matriz
int somarLinha(int x[][5], int l){
    int c, soma = 0;

    for(c = 0; c < tam; c++)
        soma += x[l][c];
    return soma;
}

int main() {

    int mat[5][5];
    int i, j;

    srand(time(NULL));

    // gerando números aleatórios entre 0 e 9 para preencher a matriz
    for(i = 0; i < tam; i++){
        for(j = 0; j < tam; j++){
            mat[i][j] = rand() % 10;
        }
    }

    // imprime a matriz gerada
    imprimir(mat);

    // imprime a soma de todas as linhas da matriz
    for(i = 0; i < tam; i++)
        printf("Soma da linha %d: %d\n",i, somarLinha(mat, i));

    return 0;
}


Deixe um comentário

10 + 6 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.