Ir ao conteúdo
  • Cadastre-se
DiógenesVieira

Pascal - Erro na lógica

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o problema seja aqui:

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

Colocar os parênteses para que total da soma seja multiplicado por 2.

Poderia ajeitar também os testes condicionais usando If...Then...Else If, já que são situações mutuamente exclusivas.

:natal:

LNW

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×