Logo Hardware.com.br
TAL.
TAL. Novo Membro Registrado
2 Mensagens 0 Curtidas

Portugol - Dúvida de Iniciante (Aluguel de Carros)

#1 Por TAL. 21/08/2020 - 13:54
Boa tarde. Estou com um problema no desenvolvimento de um algoritmo de uma empresa de aluguel de carros. É de um exercício de condição composta.
Eis o exercício:

35) Uma empresa de aluguel de carros precisa cobrar pelos seus serviços. O aluguel de um carro custa R$90 por dia para carro popular e R$150 por dia para carro de luxo. Além disso, o cliente paga por Km percorrido. Faça um programa que leia o tipo de carro alugado (popular ou luxo), quantos dias de aluguel e quantos Km foram percorridos. No final mostre o preço a ser pago de acordo com a tabela a seguir:

- Carros populares (aluguel de R$90 por dia)
- Até 100Km percorridos: R$0,20 por Km
- Acima de 100Km percorridos: R$0,10 por Km
- Carros de luxo (aluguel de R$150 por dia)
- Até 200Km percorridos: R$0,30 por Km
- Acima de 200Km percorridos: R$0,25 por Km

CÓDIGO:
algoritmo "alugueldecarros"
// Função : Exercício35
// Autor : THIAGO
// Data : 21/08/2020
// Seção de Declarações
var
km, kmp, carrop, totalp: real //variáveis carros populares kmp = km popular, carrop = carro popular, totalp = total carro popular
kml, carrol, totall: real // variáveis carros de luxo kml = km luxo, carrol = carro de luxo, totall = total carro de luxo
dia: inteiro
carro: caracter

inicio
// Seção de Comandos
escreva ("Tipo de carro - Popular[p]/Luxo[l]: ")
leia (carro)
escreva ("KM percorridos: ")
leia (km)
escreva ("Quantos dias alugado: ")
leia (dia)
carrop <- 90 * dia // carro popular VALOR DO ALUGUEL POR DIA
carrol <- 150 * dia // carro de luxo VALOR DO ALUGUEL POR DIA

// INICIO CALCULO CARRO POPULAR
se (km <=100) e (carro = "p") entao
kmp <- 0.20 *km
totalp <- kmp + carrop
escreval ("Valor total KM: ", kmp, " Reais. Total dias de aluguel: ", carrop, " Reais")
escreval ("Valor final: ", totalp)

senao
se (km >100) entao
kmp <-0.10*km
totalp<- kmp + carrop
escreval ("Valor total KM: ", kmp, " Reais. Total dias de aluguel: ", carrop, " Reais")
escreval ("Valor final: ", totalp:5:2)
// FIM CALCULO DOS CARROS POPULARES

//INICIO CALCULO CARROS DE LUXO
senao
se (km <=200) e (carro ="l") entao
kml <- 0.30 * km
totall <- kml + carrol
escreval ("Valor total KM: ", kml, " Reais. Total dias de aluguel: ", carrol, " Reais")
escreval ("Valor final: ", totall:5:2)

senao
se (km > 200) entao
kml <- 0.25 * km
totall <- kml + carrol
escreval ("Valor total KM: ", kml, " Reais. Total dias de aluguel: ", carrol, " Reais")
escreval ("Valor final: ", totall:5:2)
//FIM CALCULO CARROS DE LUXO
fimse
fimse
fimse
fimse

fimalgoritmo

Minha dúvida está nas áreas assinaladas em negrito. Na parte km > 100 e km <= 200, o programa não está distinguindo se o carro é de luxo ou não. Se eu digitar um valor de 150 km quando escolho carros de luxo, ele automaticamente, retoma o valor da operação dos preços dos carros populares ao invés de serem os de luxo, sendo que deveria retomar o valor dos carros de luxo. Ele também desconsidera o valor dos dias alugados para carros de luxo que são de 150 reais por dia e retoma os populares que é 90 por dia. Tentei tirar a parte dos carros de luxo abaixo de duas "fimse", ele mostra o resultado correto, mas também, mostra o resultado dos carros populares (e não é pra mostrar). Gostaria, humildemente, que alguém me ajudasse a solucionar este problema.
Exemplo:
Anexo do post
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
21/08/2020 - 20:50
O problema é causado por falha na lógica dos escopos IF/ELSE.
Se identar corretamente o código vai conseguir ver claramente; - Veja:
inicio
// Seção de Comandos
escreva ("Tipo de carro - Popular[p]/Luxo[l]: &quot
leia (carro)
escreva ("KM percorridos: &quot
leia (km)
escreva ("Quantos dias alugado: &quot
leia (dia)
carrop <- 90 * dia // carro popular VALOR DO ALUGUEL POR DIA
carrol <- 150 * dia // carro de luxo VALOR DO ALUGUEL POR DIA

// INICIO CALCULO CARRO POPULAR
se (km <=100) e (carro = "p&quot entao
kmp <- 0.20 *km
totalp <- kmp + carrop
escreval ("Valor total KM: ", kmp, " Reais. Total dias de aluguel: ", carrop, " Reais&quot
escreval ("Valor final: ", totalp)

senao
se (km >100) entao
kmp <-0.10*km
totalp<- kmp + carrop
escreval ("Valor total KM: ", kmp, " Reais. Total dias de aluguel: ", carrop, " Reais&quot
escreval ("Valor final: ", totalp:5:2)
// FIM CALCULO DOS CARROS POPULARES

//INICIO CALCULO CARROS DE LUXO
senao
se (km <=200) e (carro ="l&quot entao
kml <- 0.30 * km
totall <- kml + carrol
escreval ("Valor total KM: ", kml, " Reais. Total dias de aluguel: ", carrol, " Reais&quot
escreval ("Valor final: ", totall:5:2)

senao
se (km > 200) entao
kml <- 0.25 * km
totall <- kml + carrol
escreval ("Valor total KM: ", kml, " Reais. Total dias de aluguel: ", carrol, " Reais&quot
escreval ("Valor final: ", totall:5:2)
//FIM CALCULO CARROS DE LUXO
fimse
fimse
fimse
fimse

– Percebeu?
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal