allancarlos123 Posted February 21, 2014 at 08:07 PM Report #546086 Posted February 21, 2014 at 08:07 PM 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.
apocsantos Posted February 21, 2014 at 08:30 PM Report #546088 Posted February 21, 2014 at 08:30 PM 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 1 Report "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"
allancarlos123 Posted February 21, 2014 at 08:55 PM Author Report #546090 Posted February 21, 2014 at 08:55 PM (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 February 21, 2014 at 09:06 PM by thoga31 GeSHi
thoga31 Posted February 21, 2014 at 09:09 PM Report #546094 Posted February 21, 2014 at 09:09 PM (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 February 21, 2014 at 09:10 PM by thoga31 Knowledge is free!
allancarlos123 Posted February 21, 2014 at 09:26 PM Author Report #546096 Posted February 21, 2014 at 09:26 PM O enunciado é esse mesmo, o professor teve intenção de brincar, o que importa é o resultado e não os valores...
thoga31 Posted February 21, 2014 at 09:34 PM Report #546097 Posted February 21, 2014 at 09:34 PM Ok. Mas já detectaste o problema do código? Knowledge is free!
allancarlos123 Posted February 21, 2014 at 09:41 PM Author Report #546098 Posted February 21, 2014 at 09:41 PM (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 February 21, 2014 at 09:56 PM by thoga31 GeSHi
thoga31 Posted February 21, 2014 at 09:56 PM Report #546099 Posted February 21, 2014 at 09:56 PM Explica-me o 0.151. Knowledge is free!
allancarlos123 Posted February 24, 2014 at 12:29 PM Author Report #546461 Posted February 24, 2014 at 12:29 PM É, 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 😄
apocsantos Posted February 24, 2014 at 01:29 PM Report #546466 Posted February 24, 2014 at 01:29 PM 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"
passarito Posted February 24, 2014 at 04:38 PM Report #546500 Posted February 24, 2014 at 04:38 PM 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! 1 Report
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now