Prévia do material em texto
C: Vetores e Matrizes Laboratório de Informática Adaptado do material da Profª Ms. Lília Marta Brandão Soussa Modesto 1 C: Vetores Laboratório de Informática Adaptado do material da Profª Ms. Lília Marta Brandão Soussa Modesto 2 Estrutura de dados – vetores ! A variável simples armazena somente um valor de cada vez. ! Os vetores são variáveis que armazenam vários valores ao mesmo tempo, que possuem os mesmos tipos de dados, sendo chamadas de estruturas de dados homogêneas. ! Os vetores também são chamados de: arrays, variáveis indexadas. 3 4 Estrutura de dados – vetores Vetor: 0 1 2 3 4 0 Coluna ê Linha è Sintaxe: tipo <nome vetor> [dimensão]; exemplos: float NOTA [4]; (Obs: de 0 a 3) char NOME [20]; (Obs: de 0 a 19) 5 Estrutura de dados – vetores 0 1 2 3 NOTA 0 1 2 3 4 ... 19 NOME Exemplo 1: Crie um programa que leia as médias dos 8 alunos e armazene em um vetor, depois calcule e apresente a média geral da turma. 0 1 2 3 4 5 6 7 4.5 6.5 8.0 3.5 6.0 7.0 6.5 6.0 MEDIA da TURMA = 6.0 6 Estrutura de dados – vetores #include <stdio.h> #include <stdlib.h> void main(void){ int I; float SOMA = 0, MEDTUR, MEDIA[8]; printf ("\n O usuario devera digitar as 8 medias, teclando <ENTER> depois de cada uma delas."); for (I = 0; I < 8; I++) { printf ("\n Digite a media do aluno %d: ", I+1); scanf("%f", &MEDIA[I]); SOMA += MEDIA[I]; } MEDTUR = SOMA / 8; for (I = 0; I < 8; I++) { printf ("\n Nota do aluno %d : %f", I, MEDIA[I]); } printf ("\nMedia da Turma = %.2f \n\n", MEDTUR); } 7 Estrutura de dados – vetores Repete 8 vezes (0 a 7) para ler o vetor MEDIA e atualizar a SOMA Repete 8 vezes (0 a 7) para imprimir o vetor MEDIA Recapitulando: printf ("\n Digite a media do aluno %d: ", I+1); printf ("\nMedia da Turma = %.2f \n\n", MEDTUR); scanf("%f", &MEDIA[I]); 8 Estrutura de dados – vetores Imprime na tela a mensagem Digite a media do aluno 1: Onde: \n muda de linha, o %d informa ao compilador que neste local será impresso um valor inteiro que está descrito após a vírgula) Aqui o scanf está obtendo o valor da posição I do vetor MEDIA. O & é requerido pelo scanf para qq tipo de variável, inclusive vetores, com exceção de variáveis do tipo cadeia de caracteres. %.2f indica que será impresso um valor decimal (float) com duas casas decimais. Se a variável armazenada tiver mais de 2 casas decimais, a formatação usará a regra de arredondamento quando for apresentar o número. Exemplo 2: Crie um programa que: Leia dez elementos e armazene-os em um vetor A; Construa um vetor B de mesma dimensão, que é formado pela multiplicação dos elementos de A por 5; Mostrar o conteúdo do vetor A e B. 9 Estrutura de dados – vetores 0 1 2 3 4 ... 9 A 0 1 2 3 4 ... 9 B 10 Estrutura de dados – vetores #include <stdio.h> #include <stdlib.h> int main(void) { int I, A[10], B[10]; printf ("\n Digite 10 valores inteiros, teclando <ENTER> após cada um. \n "); for (I = 0; I < 10; I++) { printf ("\n Digite o %do.: ", I+1); scanf("%d", &A[I]); B[I] = A[I] * 5; } printf ("Os valores calculados sao: \n"); for (I = 0; I < 10; I++) printf ("Valor de A[%d] eh: %d - Valor de B[%d] eh: %d ", I, A[I], I, B[I]); system("pause"); return(0); } Repete 10 vezes (0 a 9) para ler o vetor A e atualizar o vetor B Repete 10 vezes (0 a 9) para escrever os vetores A e B Exercícios vetores 1) Ler 10 elementos, armazená-los em um vetor e apresentá-los. 2) Ler 8 elementos e armazená-lo em um vetor A. Construir um vetor B de mesma dimensão com os elementos do vetor A multiplicados por 3. O elementos B[0] deverá ser multiplicado pelo elemento A[0] * 3, o elemento B[1] multiplicado pelo elemento A[2]*3 e assim por diante, até 7. Apresentar o vetor B. 3) Ler dois vetores A e B com 20 elementos cada. Construir um vetor C, onde cada elemento de C é a subtração do elemento correspondente de A com B. Apresentar o vetor C. 11 Exercícios vetores 4) Ler 15 elementos e armazená-los em um vetor A. Construir um vetor B de mesmo tipo, observando a seguinte lei de formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”. Apresentar os vetores A e B. 5) Ler um vetor A com 15 elementos. Construir um vetor B de mesmo tipo, sendo que cada elemento do vetor B seja o fatorial do elemento correspondente no vetor A. Apresentar os vetores A e B (Dica: colocar a estrutura de repetição (for) que calcula o fatorial dentro da estrutura de repetição (for) que lê o vetor A e preenche o vetor B). 6) Ler dois vetores A e B com 15 elementos cada. Construir um vetor C, sendo esta a junção dos dois outros vetores. Desta forma, C deverá ter o dobro de elementos, ou seja, 30. Apresentar o vetor C. 12 7) Ler 20 elementos de um vetor A e construir um vetor B de mesma dimensão com os mesmos elementos de A, sendo que deverão estar invertidos. Ou seja, o primeiro elemento de A passa a ser o último de B, o segundo elemento passa a ser o penúltimo de B e assim por diante. Apresentar os vetores A e B. 8) Ler três vetores (A, B e C) com 5 elementos cada. Construir um vetor D, sendo este a junção dos três outros vetores. Desta forma D deverá ter o triplo de elementos, ou seja, 15. Apresentar os elementos de D. 13 Exercícios vetores 9) Elaborar um programa que efetue o cálculo de uma tabuada de um número qualquer e armazene os resultados em um vetor A de 10 elementos. Apresentar os valores armazenados no vetor. 10) Ler 6 elementos (valores inteiros) para os vetores A e B. Construir os vetores C e D de mesmo tipo e dimensão, sendo que o vetor C deverá ser formado pelos elementos de índice ímpar dos vetores A e B, e o vetor D deverá ser formado pelos elementos de índice par dos vetores A e B. Apresentar os vetores C e D. 14 Exercícios vetores C: Matrizes Laboratório de Informática Adaptado do material da Profª Ms. Lília Marta Brandão Soussa Modesto 15 Estrutura de dados – Matrizes ! As matrizes também são variáveis que armazenam vários valores ao mesmo tempo, que possuem os mesmos tipos de dados, sendo chamadas de estruturas de dados homogêneas. ! A Matriz unidimensional é chamada de . ! As matrizes também são chamadas de: tabelas, arrays, variáveis indexadas, variáveis compostas, variáveis subscritas ou arranjos. 16 0 1 2 3 4 0 1 2 3 Coluna ê Linha è Matriz: 17 Estrutura de dados – Matriz Vetor: 0 1 2 3 4 0 Coluna ê Linha è Sintaxe: tipo <nome matriz> [dimensão linha][dimensão coluna]; Exemplos: float NOTA [30][4]; char NOME [10][40]; 0 1 2 3 0 1 ... 29 0 1 ... 9 NOME NOTA 0 1 2 3 ... 39 18 Estrutura de dados – matrizes Exemplo 1: Crie um programa que: Leia duas matrizes A e B com 5 linhas e 3 colunas; Construir uma matriz C de mesma dimensão, que é formada pela soma dos elementos de A com B; Mostrar o conteúdo da matriz C. 19 Estrutura de dados – matrizes 20 Estrutura de dados – matrizes #include <stdio.h> #include <stdlib.h> void main(void){ int I, J, A[5][3], B[5][3], C[5][3]; printf("\n Digite 15 números para A: "); for (I = 0; I < 5; I++) for (J = 0; J < 3; J++) { printf ("\n Digite o A[%d][%d]: ", I, J); scanf("%d", &A[I][J]); } printf ("\n Digite 15 números para B: "); for (I = 0; I < 5; I++) for (J = 0; J < 3; J++) { printf ("\n Digite B[%d][%d]: ", I, J); scanf("%d", &B[I][J]); } for (I = 0; I < 5; I++) for (J = 0; J < 3; J++) { C[I][J] = A[I][J] + B[I][J]; printf ("\n C[%d][%d] = %d ", I, J, C[I][J]); } printf("\n\n"); system("pause"); } Exemplo 2: Crie um programa que: Leia 10 nomes de pessoas ; Mostre-os na tela. Considere que cada nome tenha 40 caracteres de comprimento. 21 Estrutura de dados – matrizes #include <stdio.h> #include <stdlib.h> void main(void){ int I; char NOME [10] [40]; for (I = 0; I < 10; I++) { printf ("\n Digite o %2do. nome e tecle <ENTER>: ", I+1); fflush(stdin); fgets(NOME [I], 40, stdin); } for (I = 0; I <= 9; I++) printf ("\n\n %2do. Nome: %s", I+1, NOME[I]); system("pause"); } 22 Estrutura de dados – matrizes Um vetor de cadeias de caracteres na verdade é uma matriz! Adição e Subtraçao -Matrizes 23 Processo que pode ser feito SOMENTE quando as matrizes tem o número de linhas e colunas igual. Matriz A “mxn” + Matriz B “mxn” = Matriz C “mxn” Matriz A “mxn” - Matriz B “mxn” = Matriz C “mxn” Exemplo: Adição a11 a12 a21 a22 Matriz A (2X2) b11 b12 b21 b22 Matriz B (2X2) Matriz C (2X2) a11+b11 a12+b12 a21+b21 a22 + b22 3 1 4 3 7 4 5 8 10 5 9 11 24 Adição e Subtraçao -Matrizes #include <stdio.h> #include <stdlib.h> int main(void){ int I, J, Y, AUX, A[2][2], B[2][2], C[2][2]; printf ("\n Digite matriz A \n"); for (I = 0; I <= 1; I++) for (J = 0; J <= 1; J++) { printf ("\n A[%d][%d]: ", I,J); scanf("%d", &A[I][J]); } printf ("\n Digite matriz B \n"); for (I = 0; I <= 1; I++) for (J = 0; J <= 1; J++) { printf ("\n B[%d][%d]: ", I,J); scanf("%d", &B[I][J]); } for (I = 0; I<=1; I++) { printf("\n"); for (J=0;J<=1;J++) { C[I][J]=A[I][J]+B[I][J]; printf ("\tC[%d][%d] = %3d ", I, J, C[I][J]); } } printf("\n"); system ("pause"); return(0); } Multiplicação com Matrizes 25 Processo que pode ser feito SOMENTE quando o número de colunas da primeira matriz é igual ao número de linhas da segunda matriz. Matriz A “mxn” + Matriz B “nxp” = mxp a11 a12 a21 a22 a31 a32 Matriz A (3X2) b11 b12 b13 b14 b21 b22 b23 b24 Matriz B (2X4) Matriz C (3X4) (a11*b11) + a12*b21) (a11*b12) + a12*b22) (a11*b13) + a12*b23) (a11*b14) + a12*b24) (a21*b11) + a22*b21) (a21*b12) + a22*b22) (a21*b13) + a22*b23) (a21*b14) + a22*b24) (a31*b11) + a32*b21) (a31*b12) + a32*b22) (a31*b13) + a32*b23) (a31*b14) + a32*b24) 3 1 4 3 6 2 7 4 5 3 5 8 2 2 21 + 5 12 + 8 15 + 2 9 + 2 28 + 15 16 + 24 20 + 6 12 + 6 42 + 10 24 + 16 30 + 4 18 + 4 26 #include <stdio.h> #include <stdlib.h> int main(void) { int I, J, Y, AUX, A[3][2], B[2][4], C[3][4]; printf ("\n Digite matriz A \n"); for (I = 0; I <= 2; I++) for (J = 0; J <= 1; J++) { printf ("\n A[%d][%d]: ", I,J); scanf("%d", &A[I][J]); } printf ("\n Digite matriz B \n"); for (I = 0; I < 2; I++) for (J = 0; J < 4; J++) { printf ("\n B[%d][%d]: ", I,J); scanf("%d", &B[I][J]); } Multiplicação com Matrizes 27 for (I = 0; I<3; I++) for (J=0;J<4;J++) { AUX = 0; for (Y=0;Y<2;Y++) AUX=AUX+A[I][Y]*B[Y][J]; C[I][J]=AUX; printf ("\tC[%d][%d] = %3d ", I, J, C[I][J]); } system ("pause"); return(0); } Multiplicação com Matrizes 11) Ler dois vetores A e B, cada um com 7 elementos. Construir uma matriz C de duas dimensões. A primeira coluna deve ser formada pelos elementos de A e a segunda coluna deve ser formada pelos elementos de B. 12) Ler dois vetores A e B, cada um com 12 elementos. Construir uma matriz C de duas dimensões. A primeira coluna de C deve ser formada pelos elementos de A multiplicados por 2 e a segunda coluna deve ser formada pelos elementos de B subtraídos de 5. 28 Exercício 13) Ler um vetor A de 10 elementos. Construir uma matriz B de duas dimensões com três colunas. A primeira coluna de B é formada pelos elementos de A somados com mais 5, a segunda coluna é formada pelo valor do cálculo da fatorial de cada elemento correspondente de A e a terceira e última coluna deve ser formada pelos quadrados dos elementos correspondentes de A. 14) Ler uma matriz A de 5 linhas e 5 colunas. Construir uma matriz B de mesma dimensão, sendo que cada elemento de B deverá ser o dobro de cada elemento correspondente de A, exceto para os valores situados na diagonal principal, os quais deverão ser o triplo de cada elemento correspondente de A. Imprimir B. 29 Exercício C: Vetores e Matrizes Laboratório de Informática Adaptado do material da Profª Ms. Lília Marta Brandão Soussa Modesto 30