130 likes | 333 Views
Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi. matriz. notas. nota. 1 2 3 4 5 6. 1 2 3 4 5 6 7. alunos. Nota[4,2] Nota[6,3 ]. Arranjo bidimensional em Pascal (matriz).
E N D
Arranjos multidimensionais (ou matrizes) Adaptado de material da profa. Maria Aparecida Livi
matriz notas nota 1 2 3 4 5 6 1 2 3 4 5 6 7 alunos Nota[4,2] Nota[6,3]
Arranjo bidimensional em Pascal (matriz) • Declaração: Array [<lim_inf>..<lim_sup>, <lim_inf>..<lim_sup>] of <tipo>; • Exemplos: Var nota: array [1..7, 1..6] of real; X: array [1..3, 5..15] of integer; Y: array [0..99, 1..15] of string; limites da primeira dimensão limites da segunda dimensão
Exemplo de leitura de valores e preenchimento de uma matriz 4x3 Program testeMatriz; Var mat:array[1..4,1..3] of integer; I,K:integer; {indices para as 2 dimensões} Begin writeln('informe a matriz'); writeln; for I:=1 to 4 do for K:=1 to 3 do begin write('posicao ',I ,', ',K,': '); readln(mat[I,K]); end; writeln; writeln('Matriz lida:'); for I:=1 to 4 do begin writeln; for K:=1 to 3 do write(mat[I,K]:4); end; readln; End.
Exercício • Faça um programa Pascal queleiavalores e preenchaumamatriz 3x4 com valoresinteiros entre 0 e 10, inclusive (notas de alunos), e indique: • Quantasvezes a nota 9 aparecenamatriz. • Quantasvezesaparececada nota?
Exemplo de solução Program exemplo2; var MA: array[1..3,1..4] of integer; total:array [0..11] of integer; noves,I,J:integer; begin noves:=0; {leitura na matriz } for I:=1 to 3 do begin writeln('Aluno ',I); for J:=1 to 4 do repeat readln(MA[I,J]); if (MA[I,J]<0) OR (MA[I,J]>10) then writeln('numero invalido'); until (MA[I,J]>=0) and (MA[I,J]<=10); writeln; end;
continuação {contagem de notas nove } for I:=1 to 3 do for J:=1 to 4 do if MA[i,j] = 9 then noves:=noves+1; writeln('havia ',noves, ' notas nove'); {contagem de todas as notas } for I:=0 to 10 do total[I]:=0; { inicializa com zero os totais } for I:=1 to 3 do for J:=1 to 4 do total[MA[I,J]] := total[MA[I,J]] + 1; for I:=0 to 10 do writeln('nota ',I,': ',total[I]); readln; end.
Exercício Dada uma matriz M (5 x 7), preenchê-la por leitura e mostrar: o maior elemento de cada linha da matriz; o maior elemento de cada coluna da matriz; a média dos elementos de cada coluna; o produto de todos os elementos diferentes de zero; quantoselementossãonegativos;
Exercício 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.
Ler as 5 notas de cada um dos alunos (identificados por um número entre 1 e 7), calcular a média de cada aluno e, após, imprimir as notas e médias dos alunos com média acima da média geral da turma.
Program notas7alunos; Var nota:array[1..7,1..6] of real; N,A:integer; {indices para as 2 dimensões} Soma,media,somatot,mediageral:real; Begin somatot:=0; for A:=1 to 7 {para cada aluno} do begin soma:=0; for N:=1 to 5 {para cada nota do aluno} do begin readln(nota[A,N]); soma:=soma+nota[A,N]; {acumula soma das notas} end; media:=soma/5; Nota[A,6]:= media; {coloca a media do aluno na posição 6 } somatot:=somatot+soma; end; mediageral:=somatot/35; {calcula a media geral da turma} writeln('Notas de alunos com media maior que a da turma: ',mediageral:7:3); for A:=1 to 7 do if nota[A,6]> mediageral then begin writeln; for N:=1 to 6 do write (nota[A,N]:8:3); end; readln; End.
Exercício 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 Faça um programa que leia uma matriz 10x10 e diga se a matriz é simétrica ou não.