VERSÃO 1 - INTRODUÇÃO Mostra como preencher uma matriz em que o número de linhas é igual ao número de alunos da turma e o número de colunas é igual ao nº de disciplinas. Ambos os valores são pedidos ao utilizador no início. De notar que no exemplo o número de alunos deverá ser 3 ou menos e o número de linhas 5 ou menos, de modo a não tornar fastidioso o preenchimento de todas as classificações (nº de linhas x nº de colunas) (valores da matriz). Ter-se-á, pois, depois, de entrar com 15 valores de classificações (3 alunos com 5 disciplinas cada). De seguida o programa faz a média por aluno e apresenta essas 3 médias (são previamente guardadas num vector) e depois escritas no ecrã. VERSÃO 1 DO PROGRAMA Program Turma; Var notas: array [1..3,1..5] of real; Media: array [1..3] of real; Soma: real; i,j,N,M: integer; Begin {Entrada de Dados} Readln(N); {ler o número de alunos} Readln(M); {ler o número de disciplinas} For i:=1 to N do Begin For j:=1 to M do Begin {ler as notas dos alunos em cada disciplina} Readln (notas[i][j]); End; End; {Processamento de Dados} For i:=1 to N do Begin Soma:=0; {pôr a zero a soma das notas do aluno i} For j:=1 to M do Begin {acrescentar a soma as notas da disciplina j} Soma:=Soma + notas[i][j] ; End; Media[i]:=Soma/M; End; {Saída de Resultados} For i:=1 to N do Begin Writeln('nota média do aluno ',i,' : ',Media[i]); End; End. VERSÃO 2 - INTRODUÇÃO Na 2ª versão o programa é melhorado. - É criado mais um vector para preenchimento com os nomes dos alunos. Assim, depois do utilizador digitar o nº de alunos e disciplinas, deve digitar o nome dos alunos e só depois as classificações de cada aluno a cada uma das disciplinas. - A apresentação dos resultados, média de cada aluno, contidas no mesmo vector da versão anterior, é apresentada de forma personalizada, isto é, em vez de apenas um número (a média do aluno), aparece uma mensagem composta por uma parte fixa (entre plicas) e duas partes variáveis, o nome do aluno e a média respectiva. VERSÃO 2 - PROGRAMA Program Turma; Var notas: array [1..3,1..5] of real; Media: array [1..3] of real; Alunos: array [1..3] of string; Soma: real; i,j,N,M: integer; Begin {Entrada de Dados} Readln(N); {ler o número de alunos} Readln(M); {ler o número de disciplinas} {ler os nomes dos alunos da turma} For i:=1 to N do Begin readln(Alunos[i]); End; For i:=1 to N do Begin For j:=1 to M do Begin {ler as notas dos alunos em cada disciplina} Readln (notas[i][j]); End; End; {Processamento de Dados} For i:=1 to N do Begin Soma:=0; {pôr a zero a soma das notas do aluno i} For j:=1 to M do Begin {acrescentar a soma as notas da disciplina j} Soma:=Soma + notas[i][j] ; End; Media[i]:=Soma/M; End; {Saída de Resultados} For i:=1 to N do Begin Writeln('a nota media aluno ',Alunos[i],' : ',Media[i]); End; End. VERSÃO 3 - INTRODUÇÃO A 3ª versão traz mais melhoramentos: - Em cada passo, inserção do número de alunos da turma, do nº de disciplinas, dos nomes dos alunos e dos nomes das disciplinas, é apresentada uma mensagem a informar o utilizador exactamente isso, o que deve fazer... - Como depreendido do parágrafo anterior, é criado um novo vector em que são colocadas (pelo utilizador) os nomes das várias disciplinas. - Finalmente a apresentação dos resultados (médias) é arredondada às décimas. Nota: a desformatação que aparece no final (ver figura abaixo) neste caso, prende-se, julgo, com as limitações do PZim. Acho que cheguei a experimentar com apenas 3 disciplinas e não houve problema... Ou então experimentem noutro editor de Pascal mais evoluído. VERSÃO 3 - PROGRAMA Program Turma; Var notas: array [1..3,1..5] of real; Media: array [1..3] of real; Alunos: array [1..3] of string; Disciplinas: array[1..5] of string; Soma: real; i,j,N,M: integer; Begin {Entrada de Dados} writeln('Quantos alunos tem a turma?'); readln(N); {ler o número de alunos} writeln('Quantas são as disciplinas do curso?'); readln(M); {ler o número de disciplinas} For i:=1 to N do Begin writeln('Escreva o nome do aluno número ', i); readln(Alunos[i]); End; For j:=1 to M do Begin writeln('Escreva o nome da ', j, chr(166), ' disciplina'); readln(Disciplinas[j]); End; For i:=1 to N do Begin writeln('Notas do Aluno ', Alunos[i]); For j:=1 to M do Begin {ler as notas dos alunos em cada disciplina} writeln('Digite Nota da Disciplina ', Disciplinas[j]); readln (notas[i][j]); End; End; {Processamento de Dados} For i:=1 to N do Begin Soma:=0; {pôr a zero a soma das notas do aluno i} For j:=1 to M do Begin {acrescentar a soma as notas da disciplina j} Soma:=Soma + notas[i][j] ; End; Media[i]:=Soma/M; End; {Saída de Resultados} For i:=1 to N do Begin writeln('A média do aluno ',Alunos[i],' é: ',Media[i]:0:1); End; End.