Arranjos
multidimensionais
(ou matrizes)
Adaptado de material da profa. Maria Aparecida Livi
1
matriz
notas
nota
alunos
1
2
3
4
5
6
1
2
3
Nota[4,2]
Nota[6,3]
4
7.5
5
6
9.5
7
2
Arranjo bidimensional em Pascal (matriz)

Declaração:
Array [<lim_inf>..<lim_sup>, <lim_inf>..<lim_sup>] of <tipo>;
limites da primeira dimensão

limites da segunda dimensão
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;
3
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.
4
Exercício
Faça um programa Pascal que leia valores e
preencha uma matriz 3x4 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?
5
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;
6
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.
7
Exercício
Dada uma matriz M (5 x 7), preenchê-la por leitura e
mostrar:
1. o maior elemento de cada linha da matriz;
2. o maior elemento de cada coluna da matriz;
3. a média dos elementos de cada coluna;
4. o produto de todos os elementos diferentes de zero;
5. quantos elementos são negativos;
8
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.
9
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.
10
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;
11
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.
12
Exercício
Faça um programa que leia uma matriz 10x10 e diga
se a matriz é simétrica ou não.
13
Download

Slides