Buscar

[NEW] Resumo_Matriz

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Resumo Matriz:
*********************************************************************************
OBS: Essa matéria cai somente na P3!
*********************************************************************************
Matriz é uma tabela (Linhas X Colunas) ou simplesmente um conjunto de vetores.
- Como declarar uma matriz?
Antes de tudo precisamos analisar o enunciado pra saber exatamente a quantidade de linhas e colunas da matriz!
Ex: Um torneio é disputado por 10 times e cada time possui um código, quantidade de pontos, vitórias, derrotas, empates e a média de pontos do torneio.
Como são >> Exatamente << 10 times e todas as informações do enunciado estão relacionadas aos times. Acabamos de descobrir o número de linhas! :)
Então já podemos criar uma macro pra representar o número de linhas: #define MAX 10
Se cada linha corresponde a um time, cada coluna corresponde a uma informação de cada time! E de acordo com o enunciado, são quantas informações pra cada time?
Código, quantidade de pontos, vitórias, derrotas, empates e a média.
Aparentemente são 6 informações, então são 6 colunas? Simples assim? :o
NÃO! Pois nem todas as informações são do mesmo tipo! Cuidado! Todas as quantidades são do tipo int, mas a média é float!
OBS: Assim como em vetor, uma matriz só pode armazenar elementos de um >> ÚNICO << tipo! (Float, int, etc) 
Então precisamos armazenar a média num vetor a parte! E o resto das informações que são todas do mesmo tipo na matriz! 
Como são 5 colunas, já podemos criar uma macro: #define COL 5
Após conseguir essas duas informações (Quantidade de linhas e colunas) podemos finalmente declarar a matriz: 
int dados[MAX][COL];
-----------------------------------//------------------------------------------
- Como enviar uma matriz como parâmetro? 
Exatamente da mesma forma como enviamos uma variável comum!
OBS: Assim como em vetor, a quantidade de posições (No caso linhas) representado pelo 'n' >> SEMPRE << acompanha a matriz!
#include <stdio.h>
#define MAX 10
#define COL 5
void preenche_matriz (int dados[][COL], int n);
int main (void){
 int dados[MAX][COL];
 float media[MAX];
 preenche_matriz (dados, MAX);
 return 0;
}
OBS: No protótipo da função podemos omitir a quantidade de linhas deixando os colchetes vazios (da mesma forma como fazemos com vetor!)
Mas é > OBRIGATÓRIO < especificar a quantidade de colunas!
-------------------------------------//----------------------------------------
- Como inicializar uma matriz? 
Lembra como inicializar um vetor? Aquele 'for' básico que era usado em quase tudo? :D 
OBS: Se caso não lembre, recomendo urgentemente que leia o "Resumo_Vetor"! Lembrando que função inicializa vetor/matriz é certeza total cair em P3! :)
 
A função inicializa matriz é o mesmo esquema da inicializa vetor! A única diferença é que agora vamos precisar usar duas repetições, ou seja, dois 'for', cada um com o seu contador! 
A primeira pra percorrer as >> linhas << e a segunda pra percorrer as >> colunas << da matriz!
void inicializa_matriz ( int v[][COL], int n){
 int i,j;
 for(i=0;i<n;i++){
 for(j=0;j<COL;j++){
 v[i][j] = 0;
 }
 }
}
Tente pensar da seguinte forma: são duas repetições (uma dentro da outra), sendo que a primeira (o for com i ) vai passando pelas >> Linhas << da matriz enquanto a segunda ( for com j ) vai passando pelas >> Colunas << da matriz! 
Ex: Imagina uma matriz nesse formato (3 linhas X 3 colunas)
1 2 3
4 5 6
7 8 9
A forma padrão de percorrer uma matriz é de acordo com a ordem desses números, ou seja, para cada linha (Para cada i), vamos percorrer todas as colunas! (Passar por cada j daquela linha!)
Como a repetição do 'i' é a mais externa, a cada repetição, a linha i fica "Fixa/Parada" enquanto a segunda repetição passa por todas as colunas j atribuindo o valor zero. 
Em outras palavras: Decore urgentemente a função acima! :D
-------------------------------------//---------------------------------------
- Atalho pra acessar as colunas da matriz: 
Colunas da matriz: Código, quantidade de pontos, vitórias, derrotas, empates.
Como são 5 colunas e já sabemos que matriz é na verdade um conjunto de vetores, a primeira coluna está na posição 0 e a última na 4!
Imagina que conseguimos descobrir a posição do time que possui mais pontos e armazenamos a posição na variável 'pos'
E num outro trecho do programa precisamos acessar a quantidade de derrotas desse time:
A quantidade de derrotas de cada time está armazenada na terceira coluna da matriz. (Começando de zero!)
Então pra acessar seu conteúdo podemos usar: >> dados[pos][3]; <<
Mas percebe que essa forma não é muito prática? Pra descobrir que era a coluna 3, primeiro tivemos que conferir a ordem que armazenamos as informações, contar uma por uma e ainda lembrar do lance de que vetor começa na posição zero.
Agora imagina se são 10 colunas, a chance de errar e o desespero vai aumentando né? :(
Por isso que eu recomendo mais do que nunca criar >> Macros << para cada coluna!
Ex: #define QD 3 
OBS: Sempre use nomes tranquilos de se lembrar e associar com a informação armazenada em cada coluna! Nesse exemplo, QD significa Quantidade de Derrotas!
Então ao invés de usar >> dados[pos][3]; << vamos usar >> dados[pos][QD]; <<! 
Agora podemos acessar o conteúdo dessa coluna sem problemas! :) 
-------------------------------------//----------------------------------------

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando