Como Passar Matriz para Função
No estudo de arrays, vimos que existem algumas maneiras de declarar o cabeçalho de funções com arrays como parâmetros, da seguinte maneira:- tipo func(tipo *array);
- tipo func(tipo array[tamanho]);
- tipo func(tipo array[]);
Ou seja, basta passar o ponteiro (*array - estudaremos mais na frente) ou o só com o par de colchetes em aberto (array[]).
No caso de arrays bidimensionais, precisamos especificar o número de colunas da matriz que estamos enviando:
- void func(int arr[][COLUMN]);
Veja bem, o número de linhas não é obrigatório (até podemos passar), mas o número de colunas, sim.
Vamos declarar e inicializar uma matriz 2x2 e em seguida enviara para a função show(), que vai simplesmente exibir ela na forma de uma tabela, veja como fica nosso código:
#include <iostream> using namespace std; void show(int arr[][2], int row) { for (int i=0 ; i<row ; i++){ for(int j=0 ; j<2 ; j++) cout<<arr[i][j]<<" "; cout<<endl; } } int main() { int arr[][2]={ {1,2}, {3,4} }; show(arr, 2); return 0; }Note algumas coisas importantes, no código acima.
Primeiro, passamos a matriz arr[][2] para a função, com o número de colunas.
Mas e o número de linhas? Como a função vai saber o tanto de linhas, para imprimir a tabela ?
Ela não sabe, por isso passamos outro parâmetro na função, o inteiro 'row'.
Matriz em C++: Passagem por referência
Toda passagem de dados para funções que envolvem arrays, é por referência. Sempre.Ou seja, passou um array pra uma função? Ela vai acessar diretamente o array e seus dados, direto na memória. Não é uma cópia que vai pra função, não é passagem por valor, ok?
Isso quer dizer uma coisa: cuidado! As funções podem modificar seus arrays, lembre-se sempre disso.
O código abaixo introduz a função 'init', que vai receber um array e inicializar cada elemento dele, perguntando pro usuário:
#include <iostream> using namespace std; const int COLS = 3; const int ROWS = 3; void init(int arr[][COLS], int ROWS) { for(int i=0 ; i<ROWS ; i++) for(int j=0 ; j<COLS ; j++){ cout << "matrix["<<i+1<<"]["<<j+1<<"]: "; cin >> arr[i][j]; } } void show(int arr[][COLS], int ROWS) { for (int i=0 ; i<ROWS ; i++){ for(int j=0 ; j<COLS ; j++) cout<<arr[i][j]<<" "; cout<<endl; } } int main() { int arr[ROWS][COLS]; init(arr, ROWS); show(arr, ROWS); return 0; }Para melhorar a organização, já definimos as linhas (ROWS) e colunas (ROLS) como variáveis globais do tipo constantes, para não ter perigo de ninguém, em algum local do código, alterar seus valores. Isso deixa o código mais claro e seguro, para manutenção.

Exercício de Matriz em C++
Crie uma matriz 4x4, onde cada linha representa as notas de um aluno, e cada coluna é uma matéria diferente. Você deve criar uma função que vai preenchendo as notas dos alunos, uma por uma, assinalando qual é a matéria e qual é o aluno.Em seguida, seu programa deve exibir, de maneira organizada, as notas de cada aluno, bem como a média de cada um, a média da turma para cada matéria, e a média geral, de todos alunos de todas as notas.
Postem sua solução nos comentários.
Nenhum comentário:
Postar um comentário