Desde de ontem estou queimando a cabeça num exercício, ele pede o seguinte: dar um código (matricula), nome de 5 alunos, assim como suas notas (P1 e P2), e média final. O programa inicia com um menu,:
a)Cadastrar alunos
b)Cadastrar notas
c)Exibir notas
d)Exibir medias
e)Exibir os codigos, os nomes, notas e medias (em forma de matriz)
f)Sair
Toda vez que a opção é escolhida o menu deve sumir, por exemplo, escolheu a) o menu some, faz o cadastro, chegou no fim do cadastro, some esta opção e volta o menu. Não é permitido usar procedure, registro, functions, só pode usar if..then..else, case..of, vetor e matriz.
O que játenho pronto é isto:
Em VETOR
program diego1;
uses crt;
var
aluno : array[1..5] of string;
nome : array[1..5] of string;
notas1 : array[1..5] of real;
notas2 : array[1..5] of real;
i, j : integer;
opcao : char;
m1, m2, m3, m4, m5 : real;
begin
clrscr;
opcao := 'g'; {Ignorar o Case}
while opcao <> 'f' do
begin
clrscr;
case (opcao) of
'a' : begin {Armazenar código e nome do aluno}
for i := 1 to 5 do
begin
writeln('Digite o codigo do ', i, ' aluno:');
readln(aluno[i]);
end;
writeln;
for j := 1 to 5 do
begin
writeln('Digite o nome do ', j, ' aluno:');
readln(nome[j]);
end;
end;
'b' : begin {Armazenar notas do aluno}
for i := 1 to 5 do
begin
writeln('Digite a nota P1 do ', i, ' aluno:');
readln(notas1[i]);
end;
writeln;
for j := 1 to 5 do
begin
writeln('Digite a nota P2 do ', j, ' aluno:');
readln(notas2[j]);
end;
end;
'c' : begin {Mostrar as notas do aluno}
for i := 1 to 5 do
begin
writeln('A nota P1 do aluno ', i, ' foi ', notas1[i]:2:2);
end;
writeln;
for j := 1 to 5 do
begin
writeln('A nota P2 do aluno ', j, ' foi ', notas2[j]:2:2);
end;
readln;
end;
'd' : begin {Cálulo da médias e sua exibição}
m1 := (notas1[1] + notas2[1]) / 2;
m2 := (notas1[2] + notas2[2]) / 2;
m3 := (notas1[3] + notas2[3]) / 2;
m4 := (notas1[4] + notas2[4]) / 2;
m5 := (notas1[5] + notas2[5]) / 2;
writeln('A media do aluno 1 ', m1:2:2);
writeln('A media do aluno 2 ', m2:2:2);
writeln('A media do aluno 3 ', m3:2:2);
writeln('A media do aluno 4 ', m4:2:2);
writeln('A media do aluno 5 ', m5:2:2);
readln;
end;
'e' : begin {Mostrar tudo na tabela}
write( ' Codigo ',' ', ' Nome ',' ', ' P1 ',' ',' P2 ',' ', ' Medias ');
FALTA ESTA PARTE
end;
clrscr;
writeln('Digite a opcao desejada: ');
writeln('a)Cadastrar alunos');
writeln('b)Cadastrar notas');
writeln('c)Exibir notas');
writeln('d)Exibir medias');
writeln('e)Exibir os codigos, os nomes, notas e medias');
writeln('f)Sair');
readln(opcao);
end;
end.
Em MATRIZ
program diego2;
uses crt;
var
dados : array[1..5, 1..2] of string;
notas : array[1..5, 1..2] of real;
media : array[1..5] of real;
i, j : integer;
opcao : char;
m1, m2, m3, m4, m5 : real;
begin
clrscr;
opcao := 'g'; {Ignorar o Case}
while opcao <> 'f' do
begin
clrscr;
case (opcao) of
'a' : begin {Armazenar código e nome do aluno}
for i := 1 to 5 do
for j := 1 to 2 do
begin
writeln('Digite o codigo do ', i, ' aluno:');
writeln('Digite o nome do ', j, ' aluno:');
readln(dados[i,j]);
end;
end;
'b' : begin {Armazenar notas do aluno}
for i := 1 to 5 do
for j := 1 to 2 do
begin
writeln('Digite a nota P1 do ', i, ' aluno:');
writeln('Digite a nota P2 do ', j, ' aluno:');
readln(notas[i,j]);
end;
end;
'c' : begin {Mostrar as notas do aluno}
for i := 1 to 5 do
for j := 1 to 2 do
begin
writeln('As notas dos alunos foram ', notas[i,j]:2:2);
end;
readln;
end;
'd' : begin {Cálculo das médias e exibição}
m1 := (notas[1,1] + notas[1,2]) / 2;
m2 := (notas[2,1] + notas[2,2]) / 2;
m3 := (notas[3,1] + notas[3,2]) / 2;
m4 := (notas[4,1] + notas[4,2]) / 2;
m5 := (notas[5,1] + notas[5,2]) / 2;
writeln('A media do aluno 1 foi: ', m1:2:2);
writeln('A media do aluno 2 foi: ', m2:2:2);
writeln('A media do aluno 3 foi: ', m3:2:2);
writeln('A media do aluno 4 foi: ', m4:2:2);
writeln('A media do aluno 5 foi: ', m5:2:2);
readln;
end;
'e' : write( ' Codigo ',' ', ' Nome ',' ', ' P1 ',' ',' P2 ',' ', ' Medias ');
FALTA ESTA PARTE
end;
clrscr;
writeln('Digite a opcao desejada: ');
writeln('a)Cadastrar alunos');
writeln('b)Cadastrar notas');
writeln('c)Exibir notas');
writeln('d)Exibir medias');
writeln('e)Exibir os codigos, os nomes, notas e medias');
writeln('f)Sair');
readln(opcao);
end;
end.
Só que EM ambos não estou conseguindo fazer o item E. Fora que no de Matriz não aparece, no prompt, o cadastro dos alunos certo, ou seja:
Pergunta
diego_moicano
Amigos
Desde de ontem estou queimando a cabeça num exercício, ele pede o seguinte: dar um código (matricula), nome de 5 alunos, assim como suas notas (P1 e P2), e média final. O programa inicia com um menu,:
Toda vez que a opção é escolhida o menu deve sumir, por exemplo, escolheu a) o menu some, faz o cadastro, chegou no fim do cadastro, some esta opção e volta o menu. Não é permitido usar procedure, registro, functions, só pode usar if..then..else, case..of, vetor e matriz.O que játenho pronto é isto:
Em VETOR
program diego1; uses crt; var aluno : array[1..5] of string; nome : array[1..5] of string; notas1 : array[1..5] of real; notas2 : array[1..5] of real; i, j : integer; opcao : char; m1, m2, m3, m4, m5 : real; begin clrscr; opcao := 'g'; {Ignorar o Case} while opcao <> 'f' do begin clrscr; case (opcao) of 'a' : begin {Armazenar código e nome do aluno} for i := 1 to 5 do begin writeln('Digite o codigo do ', i, ' aluno:'); readln(aluno[i]); end; writeln; for j := 1 to 5 do begin writeln('Digite o nome do ', j, ' aluno:'); readln(nome[j]); end; end; 'b' : begin {Armazenar notas do aluno} for i := 1 to 5 do begin writeln('Digite a nota P1 do ', i, ' aluno:'); readln(notas1[i]); end; writeln; for j := 1 to 5 do begin writeln('Digite a nota P2 do ', j, ' aluno:'); readln(notas2[j]); end; end; 'c' : begin {Mostrar as notas do aluno} for i := 1 to 5 do begin writeln('A nota P1 do aluno ', i, ' foi ', notas1[i]:2:2); end; writeln; for j := 1 to 5 do begin writeln('A nota P2 do aluno ', j, ' foi ', notas2[j]:2:2); end; readln; end; 'd' : begin {Cálulo da médias e sua exibição} m1 := (notas1[1] + notas2[1]) / 2; m2 := (notas1[2] + notas2[2]) / 2; m3 := (notas1[3] + notas2[3]) / 2; m4 := (notas1[4] + notas2[4]) / 2; m5 := (notas1[5] + notas2[5]) / 2; writeln('A media do aluno 1 ', m1:2:2); writeln('A media do aluno 2 ', m2:2:2); writeln('A media do aluno 3 ', m3:2:2); writeln('A media do aluno 4 ', m4:2:2); writeln('A media do aluno 5 ', m5:2:2); readln; end; 'e' : begin {Mostrar tudo na tabela} write( ' Codigo ',' ', ' Nome ',' ', ' P1 ',' ',' P2 ',' ', ' Medias '); FALTA ESTA PARTE end; clrscr; writeln('Digite a opcao desejada: '); writeln('a)Cadastrar alunos'); writeln('b)Cadastrar notas'); writeln('c)Exibir notas'); writeln('d)Exibir medias'); writeln('e)Exibir os codigos, os nomes, notas e medias'); writeln('f)Sair'); readln(opcao); end; end.Em MATRIZprogram diego2; uses crt; var dados : array[1..5, 1..2] of string; notas : array[1..5, 1..2] of real; media : array[1..5] of real; i, j : integer; opcao : char; m1, m2, m3, m4, m5 : real; begin clrscr; opcao := 'g'; {Ignorar o Case} while opcao <> 'f' do begin clrscr; case (opcao) of 'a' : begin {Armazenar código e nome do aluno} for i := 1 to 5 do for j := 1 to 2 do begin writeln('Digite o codigo do ', i, ' aluno:'); writeln('Digite o nome do ', j, ' aluno:'); readln(dados[i,j]); end; end; 'b' : begin {Armazenar notas do aluno} for i := 1 to 5 do for j := 1 to 2 do begin writeln('Digite a nota P1 do ', i, ' aluno:'); writeln('Digite a nota P2 do ', j, ' aluno:'); readln(notas[i,j]); end; end; 'c' : begin {Mostrar as notas do aluno} for i := 1 to 5 do for j := 1 to 2 do begin writeln('As notas dos alunos foram ', notas[i,j]:2:2); end; readln; end; 'd' : begin {Cálculo das médias e exibição} m1 := (notas[1,1] + notas[1,2]) / 2; m2 := (notas[2,1] + notas[2,2]) / 2; m3 := (notas[3,1] + notas[3,2]) / 2; m4 := (notas[4,1] + notas[4,2]) / 2; m5 := (notas[5,1] + notas[5,2]) / 2; writeln('A media do aluno 1 foi: ', m1:2:2); writeln('A media do aluno 2 foi: ', m2:2:2); writeln('A media do aluno 3 foi: ', m3:2:2); writeln('A media do aluno 4 foi: ', m4:2:2); writeln('A media do aluno 5 foi: ', m5:2:2); readln; end; 'e' : write( ' Codigo ',' ', ' Nome ',' ', ' P1 ',' ',' P2 ',' ', ' Medias '); FALTA ESTA PARTE end; clrscr; writeln('Digite a opcao desejada: '); writeln('a)Cadastrar alunos'); writeln('b)Cadastrar notas'); writeln('c)Exibir notas'); writeln('d)Exibir medias'); writeln('e)Exibir os codigos, os nomes, notas e medias'); writeln('f)Sair'); readln(opcao); end; end.Só que EM ambos não estou conseguindo fazer o item E. Fora que no de Matriz não aparece, no prompt, o cadastro dos alunos certo, ou seja:
Agradeço qualquer tipo de ajuda!
Abraços :D
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.