LagMaster Posted May 4, 2012 at 11:49 PM Report #453219 Posted May 4, 2012 at 11:49 PM Boas Foi-me proposto o desafio de fazer uma agenda .. e informaram-me que só precisaria basicamente de Array's e Record.. E so consegui vir agora ler a wiki e nao estou a perceber bem isto ? Decidi primeiro para treinar isto do Record , fazer o exercicio: 8. Crie um programa que registe os dados sobre uma turma inteira e faça a estatística básica. Serão pedidos o número de alunos, e o nome e as avaliações a Matemática e a Português de cada um. No final, o programa faz a estatística e diz quais os alunos aptos a ir a Exame Nacional (média igual ou superior a 9,5) de cada disciplina, qual a média da turma a Matemática e a média a Português. Normas: Deverá ser utilizado um só Record, que inclua todos os campos; Recorra a ciclos for para percorrer os campos; No máximo, só poderão existir 30 alunos; Limite de linhas de código (exclusive comentários e linhas em branco): 100 linhas. Eu basicamente só copiei o exemplo anterior e modifiquei algumas coisas até agora. program variavel_record; uses crt; type tipo_reg = record nome : string; idade : integer; sexo : char; notamat: integer; notalp: integer end; var registo : array [1..20] of tipo_reg; i : integer; begin for i:=1 to 20 do begin // REGISTO writeln('A FAZER REGISTO NUMERO ',i); write('Nome do Aluno: '); readln(registo[i].nome); // registo do NOME do aluno repeat // registo controlado do SEXO write('Sexo (M/F): '); readln(registo[i].sexo); until (upcase(registo[i].sexo) = 'M') or (upcase(registo[i].sexo) = 'F'); repeat // registo controlado da IDADE write('Idade: '); readln(registo[i].idade); until (registo[i].idade >= 0); repeat // registo controlado da Nota Mat write('Nota MAT ( 1 a 100 ): '); readln(registo[i].notamat); until (registo[i].notamat >= 0,<= 100); repeat // registo controlado da Nota lp write('Nota LP ( 1 a 100 ): '); readln(registo[i].notalp); until (registo[i].notalp >= 0,<= 100); writeln('REGISTO ',i,' DE 20 EFECTUADO.'); writeln; end; writeln; writeln; for i:=1 to 20 do begin // ESCRITA writeln('A VER REGISTO NUMERO ',i); writeln('Nome: ',upcase(registo[i].nome)); writeln('Sexo: ',upcase(registo[i].sexo)); writeln('Idade: ',registo[i].idade); writeln('Nota Mat: ',registo[i].notamat); writeln('Nota LP: ',registo[i].notalp); writeln; end; readln; // pausa até ENTER end. So adicionei a nota mat e nota lp.. e tentei ir logo ao fim para comparar ao minimo para passar ( no caso 50 ), mas n estou a ver. o "i" chama a lista de 1 a 20... mas depois como e que comparo a nota de mat por exemplo à media ?? agora pensando ja sob o efeito do sono deveria ser: for i:=1 to 20 do begin // chamar a lista if (registo[i].notamat <= 50 ) then begin writeln ('Passou'); readln; end else begin writeln ('Chumbou'); readln; end; Ou nao ?? Bem vou dormir, e amanha manha vejo se consigo concentrar-me mais nisto. Cumprimentos e Boa noite ? YOU SHALL NOT PASS !!!
thoga31 Posted May 5, 2012 at 07:45 PM Report #453330 Posted May 5, 2012 at 07:45 PM Atenção, a avliação é dada de 0 a 20 (vê bem o enunciado do exercício). Estás a fazer bem os registos. O segredo está, agora, na solução óptima para determinar a média e quem passou ao exame e qual a média da turma. Por isso, segue uma sugestão: - Numa variável, coloca o somatório de todas as notas de Matemática. Depois, nessa mesma variável, mete-lhe a média (= total / nº alunos). Faz o mesmo a Português. - Para saber quem está apto, percorre novamente a lista e só fazes o output do nome do aluno caso a nota dele seja >= 9,5. Atenção: - Não necessitas de fazer o output de todos os registos feitos - não é pedido, e torna o programa maçador. - Não necessitas fazer comparações com a média da turma. Só com a nota mínima para saberes quem vai a exame. Força nisso, estou a gostar de ver! 😄 Knowledge is free!
LagMaster Posted June 3, 2012 at 12:08 AM Author Report #459940 Posted June 3, 2012 at 12:08 AM (edited) Desde há um mês para cá que não venho ao P@P e que não programo nada (devido a testes seguidos ).. Vi isto e não sei por onde pegar no projecto :/ Vou ver se amanha .. quando já não tiver tanto sono consigo pescar alguma coisa do que estava a fazer .. Cumprimentos e Boa Noite LagMaster Ps-Decidi fazer o download do PDF Tutorial Pascal ( Autor:Thoga31 ) Daqui do P@P.. é mas util do que ir constantemente à Wiki Ao fazer a média.. tenho de chamar o conjunto certo ?? .. Mas como é que o somo ? E depois de obter a soma , divido pelos 20 correcto ?? Edited June 3, 2012 at 09:42 AM by LagMaster YOU SHALL NOT PASS !!!
passarito Posted June 4, 2012 at 09:00 AM Report #460181 Posted June 4, 2012 at 09:00 AM Ao fazer a média.. tenho de chamar o conjunto certo ?? .. Mas como é que o somo ? E depois de obter a soma , divido pelos 20 correcto ?? totalmat:=0; totallp:=0; For i:= 1 to 20 do begin .... totalmat:=totalmat+registo[i].notamat; totallp:=totallp+registo[i].notalp; .... end; mediamat:=totalmat/total_alunos; medialp:=totallp/total_alunos;
nunopicado Posted June 5, 2012 at 08:30 PM Report #460683 Posted June 5, 2012 at 08:30 PM Estou a gostar de ver... Mas médias à parte, estás a perceber o conceito de Record? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now