• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

GOOU

dificuldade em resolve pequeno programinha

5 mensagens neste tópico

Sou principiante

e estou aprendendo a lidar com pascal.

E tentei resolver um exercicio e nao consigo faze-lo rodar.

alguem pode me ajudar?

Esse é o exercicio:

O programa deve fazer um pequeno cadastro de alunos. Os dados a serem

coletados são: nome, sexo, idade, altura e nota final do semestre.

Seu programa deve efetuar o cadastro enquanto o usuário desejar

cadastrar um novo aluno. Para saber se continua o cadastro, faça a seguinte

pergunta para o usuário: Deseja cadastrar um novo aluno? (S/N) Após encerrar

o cadastro, exiba as seguintes informações:

- a menor nota do grupo e de quem é (nome do aluno) essa nota;

- a média de idade dos homens com altura superior a 1.80;

- uma mensagem informando se tem mais homens, mais mulheres ou tem

a mesma quantidade de homens e mulheres no grupo.

E aqui esta ate onde consegui fazer:

var nome:string;
    sexo,opc,resp,cad:char;
    idade,cont,qtdm,qtdf:integer;
    altura,notaf,menornota,maior,somaidade,somaltura,somaf,mediaidade:real;

begin
   qtdm:=0;
   qtdf:=0;
   somaidade:=0;
   somaltura:=0;
   menornota:=99;
   while resp = 's' do
   begin
      write('Nome do Aluno: '); readln(nome);
      write('Sexo: '); readln(sexo);
      write('Idade: '); readln(idade);
      write('Altura: '); readln(altura);
      write('Nota final: '); readln(notaf);
      write('Deseja cadastrar um novo aluno? s/n ');
      readln(resp);
         if resp = 'n' then
            begin
               if notaf < menornota then
               begin
                  menornota:= notaf;
               end;
               if sexo = 'm' then
               begin
                  qtdm:=qtdm+1;
               end;
               if (sexo = 'm') and (altura > 1.80) then
               begin
                  somaltura:=somaltura+1;
                  somaidade:=somaidade+idade;
                  mediaidade:=somaidade/somaltura;
               end;
               if sexo = 'f' then
               begin
                  qtdf:=qtdf+1;
               end;
               if qtdm > qtdf then
               begin
                  maior:=qtdm;
                  Writeln('Tem mais homens do que mulheres.');
               end;
               if qtdF > qtdm then
               begin
                  maior:=qtdf;
                  Writeln('Tem mais mulheres do que homens.');
               end;
               if qtdm = qtdf then
               begin
                  writeln('Tem a mesma quantidade de mulheres e homens.');
               end;
            end;
   end;
   writeln('menor nota do grupo e:' ,menornota:6:2, ' Aluno: ' ,nome);

   readln;
end.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o que é que não consegues fazer ou onde é que o programa pára ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando executado aparece somente: menor nota do grupo e:99:00 Aluno:

Nao estou conseguindo detectar o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema é simples: não estás a enviar os outros dados para o ecrã!

A linha writeln('menor nota do grupo e:' ,menornota:6:2, ' Aluno: ' ,nome); dá-te a informação da menor nota do grupo, se queres saber o resto da informação, tens de imprimir essa informação no ecrã.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O verdadeiro problema do programa é que apenas grava os dados se o utilizador não o desejar fazer, aliás, haver uma condição para gravar os dados ou não é mal pensado, os dados deviam ser gravados sempre e a condição existir apenas para determinar quando eram parados de pedir mais dados.

Uma maneira alternativa era o programa dizer que vai gravar dados até ao nome do aluno inserido ser "0" por exemplo, o loop era corrido até o nome ser "0" e dentro desse loop os dados eram gravados se o nome não fosse "0". Finalmente quando o utilizador quisesse inseria um nome "0" e o programa devolvia os dados que gerou.

No final:

A instrução

writeln('menor nota do grupo e:' ,menornota:6:2, ' Aluno: ' ,nome);

está bem.

As instruções

Writeln('Tem mais homens do que mulheres.');
Writeln('Tem mais mulheres do que homens.');
writeln('Tem a mesma quantidade de mulheres e homens.');

estão fora do sitio

E finalmente falta fazeres a instrução que mostra a média dos homens com mais de 1.80metros

Espero que estejas esclarecido

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora