A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi.

Apresentações semelhantes


Apresentação em tema: "1 Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi."— Transcrição da apresentação:

1

2 1 Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi

3 2 Problema: Ler as 5 notas de 7 alunos (identificados por um número entre 0 e 6), calcular a média de cada aluno, e após imprimir as notas e médias dos alunos, classificados pela média. Quantas variáveis para armazenar as notas e as médias são necessárias para resolver este problema?

4 3 7 vetores (um por aluno), cada qual com 6 elementos (5 notas + média) Resposta: 42 variáveis simples ou

5 Vários vetores de mesmo tipo --> matriz de vetores 7 Alunos = 7 vetores 5 Notas + Média = 6 elementos por vetor

6 notas, matriz bidimensional, armazena para 7 ALUNOS, suas 5 NOTAS mais a MÉDIA Representação espacial Cada elemento desta matriz necessita de dois índices para ser especificado--> notas é portanto uma matriz bidimensional 5.4 notas[3] [1]

7 6 notas notas[0][0] notas[0][1] … notas[0][5] notas[1][0] notas[1][1] … notas[1][5] notas[2][0] notas[2][1] … notas[2][5]. notas[6][0] notas[6][1] … notas[6][5] Outra forma de apresentação de uma matriz bidimensional:

8 7 Um arranjo multidimensional é o arranjo que necessita de mais de um índice para referenciar seus elementos. Ex.: arranjo bidimensional ou matriz de duas dimensões. Arranjo multidimensional (ou matriz, tabela)

9 8 #define MAXLIN 7 #define MAXCOL 6 float notas [MAXLIN] [MAXCOL]; Outra forma: float notas[7][6]; Acesso a um elemento de Notas: Declaração de notas como matriz bidimensional: printf(%6.2f, notas[1] [MAXCOL - 1]); linha coluna

10 9 Arranjos bidimensionais em C Primeiro índice : linha; Segundo índice : coluna.

11 10 Primeira nota do primeiro aluno: printf(Primeira nota do Primeiro Aluno: %6.2f, notas[0] [0]); Acesso a elementos determinados da matriz: Primeira nota do terceiro aluno, ou seja, i = 2 j = 0: scanf(%f, ¬as[i] [j]); Última nota do último aluno: if (notas[6] [5] > 9.5)... ou, melhor: if (notas[MAXLIN - 1] [MAXCOL - 1] > 9.5)... Pois,dessa forma, o ajuste dos índices será automático caso MAXLIN e/ou MAXCOL sejam alterados.

12 11 ATENÇÃO: Seja qual for o número de dimensões* os elementos de um arranjo são sempre de mesmo tipo! * (número de índices necessários para acessar um elemento da matriz = número de dimensões da matriz)

13 12 Leitura na matriz valores

14 13 Int valores [MAXLIN][MAXCOL]; for (i=0;i 0 j --> 0 9 valores[0] [0] <-- 9 Leitura da matriz valores Seja valores uma matriz 3 X 3

15 14 for (i=0;i 0 j --> 1 9 valores[0] [1] < Leitura da matriz valores Seja valores uma matriz 3 X 3

16 15 for (i=0;i 0 j --> 2 9 valores[0] [2] < Leitura da matriz valores Seja valores uma matriz 3 X 3

17 16 for (i=0;i 0 j --> 3 (fim do for j) 957 Leitura da matriz valores Seja valores uma matriz 3 X 3

18 17 for (i=0;i 1 j --> valores[1] [0] <--11 Leitura da matriz valores Seja valores uma matriz 3 X 3

19 18 for (i=0;i 1 j --> valores[1] [1] < Leitura da matriz valores Seja valores uma matriz 3 X 3

20 19 for (i=0;i 1 j --> valores[1] [2] < Leitura da matriz valores Seja valores uma matriz 3 X 3

21 20 for (i=0;i 1 j --> (fim do for j) Leitura da matriz valores Seja valores uma matriz 3 X 3

22 21 for (i=0;i 2 j --> valores[2] [0] < Leitura da matriz valores Seja valores uma matriz 3 X 3

23 22 for (i=0;i 2 j --> valores[2][1] < Leitura da matriz valores Seja valores uma matriz 3 X 3

24 23 for (i=0;i 2 j --> valores[2][2] < Leitura da matriz valores Seja valores uma matriz 3 X 3

25 24 for (i=0;i 2 j --> (fim do for j) Leitura da matriz valores Seja valores uma matriz 3 X 3

26 25 for (i=0;i 3 j --> (fim do for i) Leitura da matriz valores Seja valores uma matriz 3 X 3

27 26 Uso da matriz valores

28 27 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } Escrita dos elementos da matriz valores i --> 0 j --> 0 Linha valores[0] [0] --> 9 Seja valores uma matriz 3 X 3

29 28 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 0 j --> 1 Linha valores[0] [1] --> 5 Escrita da matriz valores Seja valores uma matriz 3 X 3

30 29 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 0 j --> 2 valores[0] [2] --> Escrita da matriz valores Seja valores uma matriz 3 X 3

31 30 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 0 j --> 3 (fim do for j) Escrita da matriz valores Seja valores uma matriz 3 X 3

32 31 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 1 j --> 0 7 Linha 1 11 valores[1] [0] --> Escrita da matriz valores Seja valores uma matriz 3 X 3

33 32 for (i=0; i< 3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 1 j --> 1 Linha valores[1] [1] --> Escrita da matriz valores Seja valores uma matriz 3 X 3

34 33 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 1 j --> valores[1] [2] --> Escrita da matriz valores Seja valores uma matriz 3 X 3

35 34 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 1 j --> (fim do for j) Escrita da matriz valores Seja valores uma matriz 3 X 3

36 35 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 2 j --> 0 1 Linha valores[2] [0] --> 6 Escrita da matriz valores Seja valores uma matriz 3 X 3

37 36 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 2 j --> 1 Linha valores[2] [1] --> 3 Escrita da matriz valores Seja valores uma matriz 3 X 3

38 37 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores [i] [j]); } i --> 2 j --> valores[2][2] --> Escrita da matriz valores Seja valores uma matriz 3 X 3

39 38 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 2 j --> (fim do for j) Escrita da matriz valores Seja valores uma matriz 3 X 3

40 39 for (i=0; i<3; i++) { printf(\nLinha %d, i); for (j=0; j <3; j++) printf(\n%d, valores[i] [j]); } i --> 3 j --> (fim do for i) Escrita da matriz valores Seja valores uma matriz 3 X 3

41 40 Gerar uma matriz com valores inteiros positivos (maiores que zero). Achar e apresentar o maior valor da matriz. Apresentar a matriz em formato matricial. Programa exemplo:

42 41 #include #define MAXLINHAS 3 #define MAXCOLUNAS 3 main ( ) { int amostra[MAXLINHAS][MAXCOLUNAS]; int i, j, maior; // Leitura na matriz for (i=0;i 0!\n"); } while (amostra[i] [j] < 1); } Verificação de validade das entradas

43 42 //Trecho que acha o maior valor maior = amostra[0] [0]; for (i=0;i maior) maior = amostra[i] [j]; printf("Maior valor da matriz: %d \n", maior ); //Impressao da matriz em formato matricial printf("\nMatriz em formato matricial\n" ); for (i=0;i

44 43 Execução:

45 44 Exercício Faça um programa C que leia valores e preencha uma matriz 3x3 com valores inteiros entre 0 e 10, inclusive (notas de alunos) e indique: 1)Quantas vezes a nota 9 aparece na matriz. 2)Quantas vezes aparece cada nota?

46 45 #include #define MAXLIN 3 #define MAXCOL 3 int main ( ){ int ma[MAXLIN][MAXCOL],mb[MAXLIN][MAXCOL],total[11]; int i, j, noves=0 ; // leitura na matriz for (i=0;i

47 46 // contagem de notas nove for (i=0;i

48 47 Faça um algoritmo que leia duas matrizes de tamanho 3 x 3. Em seguida, compare os valores das duas matrizes, nas respectivas posições, e mostre quais números são iguais nas duas matrizes, na mesma posição. Informe também a posição. Exercício

49 48 #include #define MAXLIN 3 #define MAXCOL 3 int main ( ){ int i, j, ma[MAXLIN][MAXCOL],mb[MAXLIN][MAXCOL]; // Leitura na matriz ma printf("primeira matriz\n"); for (i=0;i

50 49 Faça um algoritmo que leia duas matrizes A e B de tamanho 4 x 4, conte e mostre quais dos valores que estão na matriz A também aparecem na matriz B, independente de sua posição na matriz B. Exercício

51 50 #include #define MAXLIN 4 #define MAXCOL 4 int main ( ){ int i, j, k,l,ok,A[MAXLIN][MAXCOL],B[MAXLIN][MAXCOL]; // Leitura na matriz A printf("primeira matriz\n"); for (i=0;i

52 51 // comparacao entre as matrizes for (i=0;i


Carregar ppt "1 Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi."

Apresentações semelhantes


Anúncios Google