Algoritmo e Estrutura de Dados I Aulas 14
- Slides: 20
Algoritmo e Estrutura de Dados I Aulas 14 – Linguagem C Matriz Márcia Marra marsha@dcc. ufmg. br
Declaração de Matrizes • A forma geral da declaração de uma matriz bidimensional é muito parecida com a declaração de um vetor: tipo nome_da_variável [altura][largura]; • O índice da esquerda indexa as linhas e o da direita indexa as colunas; • Quando vamos preencher ou ler uma matriz no C o índice mais à direita varia mais rapidamente que o índice à esquerda. 2
Exemplo 1 #include <stdio. h> int main () { int mtrx [20][10]; int i, j, count; count=1; for (i=0; i<20; i++) for (j=0; j<10; j++) { mtrx[i][j]=count; count++; printf("n. Linha: %d Col: %d INT: %d", i, j, mtrx[i][j]); } printf("n"); return(0); } 3
Execução do Exemplo 1 4
Matrizes de Strings • Matrizes de strings são matrizes bidimensionais. • Imagine uma string - ela é um vetor. • Se fizermos um vetor de strings estaremos fazendo uma lista de vetores. • Esta estrutura é uma matriz bidimensional de chars. 5
Matriz de Strings • A forma geral de uma matriz de strings é: char nome_var[num_strings][compr_strings]; • Aí surge a pergunta: como acessar uma string individual? • Fácil. É só usar apenas o primeiro índice. • Então, para acessar uma determinada string basta fazer: nome_da_variável [índice] 6
Exemplo de matriz de string #include <stdio. h> int main () { char strings [5][100]; int count; for (count=0; count<5; count++){ printf ("n. Digite uma string: "); gets (strings[count]); } printf ("nn. As strings que voce digitou foram: nn"); for (count=0; count<5; count++) printf ("%sn", strings[count]); return(0); } 7
Execução 8
Matriz de Strings • O que estamos fazendo na verdade é utilizando um ponteiro para apontar para diversos endereços de strings. String 1 ppch String 2 String 3 ppch[0], ppch[1], String 4 ppch[2], String 5 ppch[3] pch 9
E qual a utilidade disto? • Um dos usos mais comuns para matrizes de strings são os argumentos para linha de comandos. • Dado um programa corretamente compilado, como fazer para passar argumentos para ele? . /teste 2 3 10
Passagem de parâmetros para a função main • Com o objetivo de passar parâmetros para a função main, você deve utilizar o seguinte protótipo: int main(int argc, char **argv) OU int main(int argc, char *argv[]) Onde: - argc: é o número de argumentos digitados, incluindo o nome do programa - argv: é uma matriz de strings que armazena cada argumento da linha de comando, incluindo o nome do programa. 11
Exemplo #include<stdio. h> int main (int argc, char **argv) { int i; printf("argc = %dnn", argc); for (i=0; i<argc; ++i) printf("argv[%d]: %sn", i, argv[i]); return(0); } 12
Execução 13
Matrizes multidimensionais • O uso de matrizes multidimensionais na linguagem C é simples. • Sua forma geral é: tipo_da_variável nome_da_variável [tam 1][tam 2]. . . [tam. N]; • Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. 14
Inicialização de Matrizes • Podemos inicializar matrizes, assim como podemos inicializar varíáveis. • A forma geral de uma matriz como inicialização é: tipo nome_da_variável [tam 1][tam 2]. . . [tam. N] = {lista_de_valores}; • A lista de valores é composta por valores (do mesmo tipo da variável) separados por vírgula. 15
Inicialização de Matrizes • Os valores devem ser dados na ordem em que serão colocados na matriz. • Alguns exemplos: float vect [6] = { 1. 3, 4. 5, 2. 7, 4. 1, 0. 0, 100. 1 }; int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; char str [10] = { 'J', 'o', 'a', 'o', '