Ir ao conteúdo

VisualG Uma empresa de aluguel de carros


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Boa noite! É a minha primeira postagem aqui no fórum e tô travado nesse exercício. O problema é que meu código só me dá o resultado dos carros populares e ignora os de luxo. O exercício e meu algorítimo abaixo:

 

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

algoritmo "semnome"
var
carro: caractere
dias, km, p1, p2, l1, l2, pd, ld: real
inicio
escreva("Que tipo de carro alugou? ")
leia(carro)
escreva("Por quantos dias alugou? ")
leia(dias)
escreva("Kilómetros percorridos, Km: ")
leia(km)
p1 <- (km*0.20) // km x 0.20 - popular
p2 <- (km*0.10) // km x 0.10 - popular
l1 <- (km*0.30) // km x 0.30 - luxo
l2 <- (km*0.25) // km x 0.25 - luxo
pd <- (dias*90) // dias x 90 reais - popular
ld <- (dias*150)// dias x 150 reais - luxo
se "popular" e (km <= 100) entao
   escreval("VALOR:", p1 + pd)
senao
   se "popular" e (km > 100) entao
      escreval("VALOR:", p2+ pd)
   senao
      se "luxo" e (km <= 200) entao
         escreval("VALOR:", l1 + ld)
      senao
         se "luxo" e (km > 200) entao
            escreval("VALOR:", l2 + ld)
         fimse
      fimse
   fimse
fimse
fimalgoritmo

 

  • Amei 1
  • Solução
Postado

@mendesdaniel6    você não vai precisar de tantas variáveis nesse código , não ,  e outras coisa é que você está fazendo os cálculos antes de saver se o carro escolhido foi luxo ou popular ,  e que só deveriam ser feitos depois disso ,  e também é bom fazer a identação do código para facilitar detectar erros e ficar melhor organizado  ,  e com certeza ele só mostra o de carros popular , por que o compilador não entende o que você quis dizer ali nessas linha , por exemplos :

se "popular" e (km <= 100) entao  // o compilador não sabe com o que comparar
se "luxo" e (km <= 200) entao     //  

e  então  você pode fazer esse exercício de vária maneiras ,  e aqui tem um exemplo de como poderia ser , mas você pode fazer de outras formas , fique à vontade e se Quiser modificar QQ coisa também :

algoritmo "aluguel de carros"
var
  carro                  : caractere
  dias, km, p_a_ser_pago : real
inicio
  escreva("Que tipo de carro alugou ? < popular OU Luxo > ")
  leia(carro)
  escreval
  escreva("Por quantos dias alugou ? < minimo hum Dia > ")
  leia(dias)
  escreval
  escreval("Kilómetros percorridos,")
  escreval("< Apenas Números PosiTivos >")
  escreva ("Por Favor hein . . . ! ")
  leia(km)
  se carro = "popular" entao
    se km <= 100 entao
      p_a_ser_pago <- km * 0.2 * dias// km x 0.20 - popular
    senao
      p_a_ser_pago := km * 0.1 * dias
    fimse
    p_a_ser_pago := p_a_ser_pago + 90
  fimse
  se carro = "luxo" entao
    se km <= 200 entao
      p_a_ser_pago <- km * 0.3 * dias// km x 0.20 - popular
    senao
      p_a_ser_pago := km * 0.25 * dias
    fimse
    p_a_ser_pago := p_a_ser_pago + 150
  fimse
  escreval
  escreval("VALOR a sEr pAGU --: ", p_a_ser_pago)
  escreval
  escreval
fimalgoritmo

 

Postado

@devair1010 Muito obrigado por responder kkkkkk eu tava realmente perdido olhando meu código, realmente tô pecando muito na identação pois achei que o que o professor disse fosse regra absoluta, vou estudar esse código, refazer e mais tarde volto aqui 🙂

  • Curtir 1
  • Obrigado 1
Postado

@devair1010 Consegui resolver graças ao seu código kkkk, mas não entendi como usar isso  ":="  e o VisualG ficou pedindo "fimse" para cada "se" adicionado no código, daí não consegui meio que replicar. Mas ao declarar os valores das variáveis em cada condicional fez o código funcional. Mesmo assim me deu uma luz, pois não precisei usar tantas variáveis e deixou o código um pouco mais limpo.  Ficando assim:

algoritmo "algc"
var
carro: caractere
dias, km, valor: real
inicio
escreva("Diga o tipo de carro que alugou, Luxo ou Popular:? ")
leia(carro)
escreva("Por quantos dias alugou o carro? ")
leia(dias)
escreva("Quantos Km percorridos? Km: ")
leia(km)
        se (carro = "popular") e (km <= 100) entao
        valor <- km*0.2+(dias*90)
        senao
             se (carro = "popular") e (km > 100) entao
             valor <- km*0.1+(dias*90)
             senao
                  se (carro = "luxo") e (km <= 200) entao
                  valor <- km*0.3+(dias*150)
                  senao
                       se (carro = "luxo") e (km > 200) entao
                       valor <- km*0.25+(dias*150)
                       fimse
                  fimse
             fimse
        fimse
escreval(valor)
fimalgoritmo

 

  • Amei 1
  • Membro VIP
Postado
1 hora atrás, mendesdaniel6 disse:

mas não entendi como usar isso  ":=" 


O ":=" é a mesma coisa do "<-". Ex.:

valor <- km*0.2+(dias*90)

 

É o mesmo que:

valor := km*0.2+(dias*90)

 

 

 

  • Obrigado 1
  • Amei 1
  • Membro VIP
Postado

Para indentar o código no VisualG, pressione CTRL+G.

 

 

Sobre:

1 hora atrás, mendesdaniel6 disse:
valor <- km*0.2+(dias*90)


Para que esses "()" na conta? Se quiser usar, uma sugestão seria manter a coerência... ou seja:

Faria algo como:

valor <- (km*0.2)+(dias*90)

 

Ou faria:

valor <- km*0.2+dias*90



Para ficar mais fácil de visualizar, poderia dar um espação entre o sinal de adição. Ex.:
 

valor <- (km*0.2) + (dias*90)

 

valor <- km*0.2 + dias*90

 


Adendo: esses espaços não fazem a menor diferença na conta. Seria apenas visual.

 

  • Curtir 1
  • Obrigado 1
  • Membro VIP
Postado
Em 27/03/2022 às 19:03, mendesdaniel6 disse:

Faça um programa que leia o tipo de carro alugado (popular ou luxo)


Em vez de usar "texto", que tal usar códigos? Ex.:
 

algoritmo "Calculadora de aluguel de carro"
var
   tipoCarro: caractere
   diasAluguel: inteiro
   kmPercorridos: inteiro
   valorASerPago: real

inicio
   escrevaL("CALCULADORA DE ALUGUEL DE CARRO v0.01")
   escrevaL("")
   escrevaL("*** DADOS DO CARRO *** ")
   escrevaL("")
   escreva ("Tipo do carro ([1] Popular ou [1] Luxo): ")
   leia(tipoCarro)
   escreva ("Dias de alugel: ")
   leia(diasAluguel)
   escreva("km percorridos: ")
   leia(kmPercorridos)

   se (tipoCarro = "1") E (kmPercorridos <= 100) entao
      valorASerPago <- kmPercorridos*0.2 + diasAluguel*90
   senao
      se (tipoCarro = "1") E (kmPercorridos > 100) entao
         valorASerPago <- kmPercorridos*0.1 + diasAluguel*90
      senao
         se (tipoCarro = "luxo") E (kmPercorridos <= 200) entao
            valorASerPago <- kmPercorridos*0.3 + diasAluguel*150
         senao
            se (tipoCarro = "luxo") E (kmPercorridos > 200) entao
               valorASerPago <- kmPercorridos*0.25 + diasAluguel*150
            fimSe
         fimSe
      fimSe
   fimSe

   escrevaL("")
   escrevaL("Valor a ser pago: ", valorASerPago:1:2)
fimAlgoritmo


Caso deseje testar algumas modificações... Baseando nesse código acima ou no seu código, poderia inserir uma validação para só aceitar "tipo válidos", ou seja, ou só vai aceitar 1 ou 2, ou só vai aceitar "luxo" ou "popular". Caso informar um tipo inválido, solicitar a leitura desse dado novamente.

 

Adendo: vale ressaltar que uma orientação geral é seguir apenas o que está no enunciado. Não precisa fazer a mais ou a menos... mas sim seguir os "requisitos do sistema". Alterações seria uma plus... uma versão separada. 

Adendo 2: o "tempo que perder" modificando um problema, pode ganhar ao começar a fazer outros, pois já terá as experiências mais ideias de possibilidades de como fazer...É muito mais fácil "copiar" soluções de problemas já conhecidos que "desvendar" problemas novos!

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!