Jump to content

Recommended Posts

Posted

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 !!!

Posted

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!

  • 4 weeks later...
Posted (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 by LagMaster

YOU SHALL NOT PASS !!!

Posted

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;
Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.