Jump to content

Recommended Posts

Posted

O professor passou 10 exercícios e só está faltando uma que não consigo fazer...

Para trafegar na BR-232, um determinado caminhão necessita parar no KM 4 para realizar uma pesagem.

Caso o peso da carga seja maior ou igual a 20% ao peso do caminhão o mesmo terá que pagar uma multa de 2 reais, caso o peso seja inferior a 20% ou maior e igual a 15% pague 1000 reais;

Caso o peso seja inferior a 15%, nada a pagar.

Posted

Boa noite,

Assim derrepente podes usar IF's encadeados, ou usar uma estrutura case.

Em pseudocódigo seria algo tipo:

caso:

se peso_carga >= (peso_do_camião * 0.20)

{ Multa = 2;

Sai;

}

se (peso_carga >= (peso_do_camião * 0.15)

{ Multa = 1000;

Sai;

}

se (peso_carga > (peso_do_camião * 0.15)

{ Multa = 0;

Sai;

}

fim_caso

Basicamente tens algumas operações aritméticas no interior, ele valida e caso acerte numa delas executa o bloco e sai, caso não acerte em nenhuma sai. Agora é só implementares em Pascal.

Vê na wiki da comunidade o seguinte livro, acho que te pode ser muito útil.

Cordiais cumprimentos,

Apocsantos

  • Vote 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted (edited)

Não deu certo :/

Program Pzim ;
Var
peso_carga,peso_do_caminhao:REAL;
Begin
Writeln('Qual o peso do caminhao');
Readln(peso_do_caminhao);
Writeln('Qual o peso da carga');
Readln(peso_carga);

If peso_carga>=(peso_do_caminhao*0.20) Then
Writeln('Multa de 2 reais')
else

If (peso_carga>=(peso_do_caminhao*0.15)) Then
Writeln('Multa de 1000 reais')
else
If (peso_carga>(peso_do_caminhao*0.15)) Then
Writeln('Multa 0');
End.
Edited by thoga31
GeSHi
Posted (edited)

Se tivesses entendido o pseudocódigo e não apenas "copiado", terias visto que o @apocsantos se enganou numa condição.

Compara o enunciado com o código, são a tradução perfeita um do outro excepto numa das condições, em que o código está mal. 😉

Só uma nota: se eu exceder 20% pago só 2 reais? E se for entre 15 e 20% pago 1000? Não será antes 2000 reais para uma percetagem acima de 20?

Edited by thoga31

Knowledge is free!

Posted (edited)

Não sei se o resultado está certo, alguém testa ai por favor 🙂

Tenho quase certeza que é assim mesmo

Fiz desse jeito..

Program Pzim ;

Var
peso_carga,peso_do_caminhao:REAL;

Begin
Writeln('Qual o peso do caminhao');
Readln(peso_do_caminhao);
Writeln('Qual o peso da carga');
Readln(peso_carga);
If (peso_carga>=(peso_do_caminhao*0.20)) Then
Writeln('Multa de R$ 2,00')
 else
If (peso_carga>=(peso_do_caminhao*0.15)) Then
Writeln('Multa de R$ 1000,00')
else
If (peso_carga<(peso_do_caminhao*0.151)) Then
Writeln('Nenhuma multa');
End.

.

Edited by thoga31
GeSHi
Posted

É, eu errei.

O professor já corrigiu o exercício e ficou assim...

Program Br232;
Var
PesoCarga, PesoCami:Integer;
Begin
Writeln('Digite o peso do caminhao');
Readln(PesoCami);
Writeln('Digite o peso da carga');
Readln(PesoCarga);
Clrscr;
IF(((PesoCami * 20)/100)<=PesoCarga)Then
Begin
Writeln('Multa = R$ 2,00');
End
Else If(((PesoCami * 15)/100)<=PesoCarga)Then
Begin
Writeln('Multa = R$ 1000,00');
End
Else
Begin
Writeln('Multa = 0');
End;


End.

Agradeço pela ajuda 😄

Posted

Bom dia,

Basicamente ele usou IF's encadeados, e em vez de calcular os 20% e 15% com base numa unica operação aritemética, usou duas operações, uma multiplicação seguida de uma divisão. Não que seja relevante neste caso, mas cria código menos eficaz.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Bom dia,

Basicamente ele usou IF's encadeados, e em vez de calcular os 20% e 15% com base numa unica operação aritemética, usou duas operações, uma multiplicação seguida de uma divisão. Não que seja relevante neste caso, mas cria código menos eficaz.

Cordiais cumprimentos,

Apocsantos

Isto pode ser para o programa das novas oportunidades lá do Brasil! LOL!

  • Vote 1

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.