Jump to content

arredondamento em pascal


mpm
 Share

Recommended Posts

Boas

Estou a fazer um mini projeto em pascal, uma calculadora de médias finais do secundario. Para fazer o calculo final da média, preciso de arredondar as notas, mas não sei como fazer isso.

Por exemplo:

  filofinal := ((((filo10 + filo11)/2) *0.6) + ((examfilo/10)*0.4));

Nessa linha, tenho filofinal (média de filosofia dos dois anos) , filo10 (nota de filosofia do 10ºano), filo11 (nota de filosofia do 11ºano), examfilo (nota do exame de filosofia).

Para a conta ficar correta, o resultado de (filo10 + filo11)/2) tem de ser arredondado as unidades para depois se multiplicar por 0.6 e se juntar a nota do exame (examfilo/10)*0.4)

O único arredondamento, neste caso, é esse e é às unidades.

Cumps

Edited by nunopicado
GeShi
Link to comment
Share on other sites

Para arredondar, tens de usar um de dois conceitos:

1. Arredondamento durante o cálculo

2. Arredondamento para apresentar o resultado

Durante o cálculo, e se for para arredondar à unidade, usas a função Round.

r := 5.1551;
r := Round(r);
// R = 5

r := 5.6545;
r := Round(r);
// R = 6

Se for na apresentação de resultados, já depende de como os vais apresentar.

Mas por exemplo, se for para escrever na consola com o WriteLn, farias:

WriteLn(r:3:2); // três caracteres no mínimo, 2 deles são decimais

"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.

Link to comment
Share on other sites

Acrescento uma terceira hipótese às duas dadas pelo @nunopicado:

3. Usar a função
RoundTo
, da
unit
math
, para arredondar a
n
casas decimais durante o cálculo:

uses math;
// ...
r := 13.625;
r := RoundTo(r,1); // arredonda para 1 casa decimal e guarda o resultado na variável r

A diferença do ponto 3 para o ponto 2 (apresentado pelo Nuno) é que no ponto 2 o arredondamento é efectuado apenas na apresentação do resultado - em termos técnicos é uma formatação de output - enquanto que no ponto 3 o arredondamento é calculado, podendo ser guardado numa variável.

Se só precisas do arredondamento na hora de apresentar a média, o ponto 2 será o mais recomendado. 😉

Cumprimentos.

Edited by thoga31
  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

Tenho outra questão: está-me a dar um erro, mas não vejo qual é o problema, diz que ";" não é esperado, mas se o tirar diz que falta um....

[/indent]
portfinala := ((port10 + port11 + port12)/3);
portfinala := Round(portfinala);
portfinalb := ((portfinala *0.6) + (exampt/10)*0.4);
portfinalb := Round(portfinalb);
portfinal := portfinala + portfinalb;
portfinal := Round(portfinal);

matfinala := (((mat10 + mat11 + mat12)/3);          
matfinala := Round(matfinala);
matfinalb := ((matfinala *0.6) + (exammat/10) *0.4);
matfinalb := Round(matfinalb);
matfinal := matfinala + matfinalb;
matfinal := Round(matfinal);
[indent=1]

No primeiro, está tudo bem, mas depois no da matemática, logo na primeira linha da aquele erro.

NOTA: Ah, já vi o problema, tinha um "(" a mais nessa linha 😄

Edited by mpm
Link to comment
Share on other sites

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
 Share

×
×
  • 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.