Ir ao conteúdo
  • Cadastre-se

Pascal - Erro na lógica


DiógenesVieira

Posts recomendados

beleza Galera ??

Estou tentando fazer um programa básico em pascal , porém estou com uma certa dificuldade. Estou tentando criar aquele velho programa de calculo de médias. Mas baseado no calculo das medias de onde estudo

Que nada mais é que :

N1 = Provas do primerio bimestre

N2 = Provas do segundo ( porém essa nota é definida da seguinte forma : Prova materia equivale a 70% e prova integrada a 30*)

Medias = N1 + N2 / 3

Criei o código mas creio que minha logica esteja errada pois sempre me retorna a média errada ,e ja tentei de todos as formas.

Program Teste ;
var
materia : string ;
n1 : real ;
n2 : real ;
aux : real ;
media : real ;
integrada : real ;

Begin

write('Ola , Digite o nome da matéria') ;
readln (materia) ;
writeln ('Digite Resultado das avaliações realizadas no primeiro bimestre') ;
readln (n1);
writeln ('Digite Resultado das avaliações realizadas no segundo bimestre') ;
readln (n2);
writeln ('Digite Nota da avaliação integrada') ;
readln (integrada);

aux := ((n2 * 0.7) + (integrada * 0.3) * 2 );
media := ((n1 + aux)/3) ;


If (media < 3) then
Begin
writeln ('Aluno REPROVADO! Sua Media na materia foi ', materia , media);
end;

If (media > 3) and (media < 5) then
Begin
writeln ('Aluno em EXAME! Sua Media na materia foi ', materia , media);;
end;

If (media >= 5) then
Begin
writeln ('Aluno em Aprovado! Sua Media na materia foi ', materia , media);
end ;

End.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

beleza Galera ??

Estou tentando fazer um programa básico em pascal , porém estou com uma certa dificuldade. Estou tentando criar aquele velho programa de calculo de médias. Mas baseado no calculo das medias de onde estudo

Que nada mais é que :

N1 = Provas do primerio bimestre

N2 = Provas do segundo ( porém essa nota é definida da seguinte forma : Prova materia equivale a 70% e prova integrada a 30*)

Medias = N1 + N2 / 3

Criei o código mas creio que minha logica esteja errada pois sempre me retorna a média errada ,e ja tentei de todos as formas.


var
materia : string ;
n1 : real ;
n2 : real ;
aux : real ;
media : real ;
integrada : real ;

Begin

write('Ola , Digite o nome da matéria') ;
readln (materia) ;
writeln ('Digite Resultado das avaliações realizadas no primeiro bimestre') ;
readln (n1);
writeln ('Digite Resultado das avaliações realizadas no segundo bimestre') ;
readln (n2);
writeln ('Digite Nota da avaliação integrada') ;
readln (integrada);

aux := ((n2 * 0.7) + (integrada * 0.3) * 2 );
media := ((n1 + aux)/3) ;


If (media < 3) then
Begin
writeln ('Aluno REPROVADO! Sua Media na materia foi ', materia , media);
end;

If (media > 3) and (media < 5) then
Begin
writeln ('Aluno em EXAME! Sua Media na materia foi ', materia , media);;
end;

If (media >= 5) then
Begin
writeln ('Aluno em Aprovado! Sua Media na materia foi ', materia , media);
end ;

End.
Program Teste ;

Olá.

Vou tentar complementar da forma que eu entendi o problema...

A primeira coisa que você poderia fazer é organizar logicamente as variáveis... vamos lá:

No seu código, você está já solicitando o valor de N2:

    writeln ('Digite Resultado das avaliações realizadas no segundo bimestre') ;
readln (n2);

Ou seja, ficou parecendo que o usuário já precisaria informar a resposta final de N2... mas pelo seu enunciado, você precisaria solicitar o valor da "Prova materia" e o valor da "Prova Integrada" e assim calcular e chegar ao resultado. Da mesma forma, para N1, você teria que solicitar o valor da "Prova materia" (ou o equivalente) ao primeiro bimestre.

Imaginei algo mais ou menos assim:

N1 = Provas do primerio bimestre

N2 = Provas do segundo ( porém essa nota é definida da seguinte forma : Prova materia equivale a 70% e prova integrada a 30*)

Medias = N1 + N2 / 3

Logo:

N1 = ProvasPrimeiroBimestre;

ProvasSegundoBimestre = ProvaMateria*70 + ProvaIntegrada*30;

N2 = ProvasSegundoBimestre;

Media=(N1+N2)/2

Obs.: Eu não entendi porque se deve multiplicar por 2, se alguém puder me explicar.... :unsure:

...

Assim como LNW sugeriu o uso do IF/ELSE, você precisa ajustar os valores usados nas sentenças... por exemplo, se a média no Aluno der 3, ele cairia em que grupo??

No aguado.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Desculpe esqueci de informar

N2 = Provas do segundo ( porém essa nota é definida da seguinte forma : Prova materia equivale a 70% e prova integrada a 30% * 2)

Esse "* 2" se refere a "prova inegrada" ou a "Prova materia equivale a 70% e prova integrada a 30%" ?

Se for "o resultado da soma vezes dois", então deve ser algo como "Segundo bimestre tendo peso '2'".

Logo na fórmula deve ficar "3" mesmo...

1 do primeiro, mais 2 do segundo..

Media = (N1 + N2) / 3

Ou se preferir multiplicar o peso na média.. ficaria:

Media = (N1 + N2*2)/3

PS: Lembrando que Pascal segue basicamente a mesma regra utilizada na matemática, ou seja, "a multiplicação e divisão, vem antes da soma adição e subtração".

Tente ajustar, qualquer coisa posta aqui o seu novo código para analisarmos.

No aguardo.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • 2 semanas depois...
  • Membro VIP
Amigo, pelo que entendi pela nota do segundo bimetre:

30% da nota deve ser multiplicado por 2.

Se for como eu disse, pra caucular a média:

n2:= (n2*0.7) + (n2*0.3)*2;

media:= (n1 + n2)/3;

Olá.

Não deve ser "n2:= (n2*0.7) + (n2*0.3)*2;", até mesmo porque são duas notas diferentes e ai só está usando 1 ("n2" para as duas notas).

Veja, são três notas no total, ex.:

ProvasPrimeiroBimestre;

ProvasSegundoBimestre (sendo divididos em duas: ProvaMateria e ProvaIntegrada)

Ou para ilustra melhor, poderia ser n1 (única do 1ª bimestre), n21 (1ª do 2º bimestre) e n22 (2ª do 2º bimestre), ok? (o que importa é que são 3 provas).

Então, se fosse pela sua fórmula, faria algo assim:

n2:= ([B]n21[/B]*0.7) + ([B]n22[/B]*0.3)*2

beleza?

Para facilitar as contas, vamos supor que ele tire 10 em tudo, logo sua média tem que dar 10 (nota máxima em tudo, significa média máxima tb). Vamos lá:

NOTAS

n1=10

n21=10

n22=10

MÉDIA

n1:=10;

n2:= (10*0.7) + (10*0.3)*2;

n2:=7+3*2;

n2:=7+6

n2:=13;

media:= (10 + 13)/3;

media:=7,66 ??? Tá errado.

Obs.1: Como o segundo bimestre tende a ser mais difícil (mais assunto e mais complexos), a tendência é que a nota cai, logo ficando mais difícil recuperar as notas, já que essas notas tem o peso 2. (ou seja, você ganhará relativamente mais ponto em provas mais difícil...)

Obs.2: Se um aluno sempre tirar a mesma nota em todas as provas, a média também será o valor das provas, ex.: se tirar 6 nas 3 provas, a média tem que ser 6.

Por ai vai.

No aguardo.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!