Baixe o app para aproveitar ainda mais
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! :) -------------------------------------//----------------------------------------
Compartilhar