Ir ao conteúdo
  • Cadastre-se

gostaria de saber o erro aqui??visualg


Posts recomendados

Algoritmo “Algo15_IPVA”

 

Criar um algoritmo para calcular um IPVA.

Receber na tela:

Ø  Nome do Condutor.

Ø  Placa do Veículo.

Ø  Ano Fabricação.

Ø  Preço do Veículo.

Ø  Tipo de Combustível.

Calcular o valor do IPVA apenas para veículos com ano superior a 1988, conforme abaixo:

      4% para veículos a “GASOLINA”.

      2% para veículos com outros combustíveis.

Mostrar:

Ø  Valor do IPVA.

Mensagem “Veículo Isento”, caso seja ano <=1988.

 

algoritmo "Algo15"
// Função :Calcular o IPVA apenas para veículos com anos superior a 1988
// Autor : João Emilio
// Data : 07/03/2017
// Seção de Declarações 
var
nomecondutor,placa,combus,gasolina,outros:caractere
anof:inteiro
preco,ipva:real

inicio
// Seção de Comandos 
Escreval("ETEC Prof.Alcídio de Souza Prado")
Escreval("________________________________")
Escreval("***          IPVA           ****")

//Comandos de entrada
Escreva("Nome do Condutor...................: ")
leia(nomecondutor)
Escreva("Placa do Veículo...................: ")
leia(placa)
Escreva("Ano de Fabricação..................: ")
leia(anof)
Escreva("Preço do Veículo                 R$: ")
leia(preco)
Escreva("Tipo de Combustível................: ")
leia(Combus)

//Processo
 se anof<=1988 então
Escreval("**  VEÍCULO ISENTO **")
 fimse
  se combus <> "gasolina"   então
ipva<-(2/100*preco)
  senao
ipva<-(4/100*preco)
fimse

//Comando de saída
Escreval(">>Valor do IPVA                  R$: ",ipva:3:2)
Escreval("********FIM DO ALGORITMO********")


fimalgoritmo


 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Joao emilioborges,

 

13 horas atrás, Joao emilioborges disse:

é o seguinte ..quando coloco uma data antes de 1988 eli tem que dar *veiculo isento* de IPVA 

só que nesse que eu fiz aparece "valor de ipva"embaixo do mesmo jeito 

queria saber onde estou errando 

 

Então, você precisa condicionar as respostas as respectivas categorias... no caso temos 2: ou é <=1988 ou é >1988!, ou seja, ou apresenta "que é isento" ou "apresenta o valor do IPVA"...  Veja que esse "ou" está no conceito de "eventos mutuamente exclusivos", pois não pode ser "menor igual a 1988 e ao mesmo tempo ser maior que 1988"... logo, devem-se utilizar o "se/senao".

 

Algo do tipo:

se anof<=1988 então
  //aqui instruções caso seja de 1988 pra trás;
             
senao
  //aqui instruções caso não seja de 1988 pra trás (é de 1989 pra cima);
             
fimse

Pra adiantar, a estrutura da verificação do combustível e o que você chamou de "comando de saída", ficam dentro do "senao"... entende? (vai ter um se/senão dentro do senão do primeiro se... não tem problema!). Perceba também que poderíamos dizer que "**  VEÍCULO ISENTO **"" também é um "comando de saída"... ou seja, ou você "informa que é isento", ou "calcula o IPVA e exibe o resultado".

 

No aguardo.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A proposta do fórum não é "entregar uma resposta pronta", mas sim "tentar auxiliar para que o próprio usuário encontre a sua resposta"... :). Talvez eu não tenha sido tão claro, mas sugiro dá uma revisada no que eu disse...

 

Minha sugestão:

Revise o conceito de SE (ou if, para outras linguagens). Tente verificar e entender as diferenças em usar somente os "SE" e usar "SE/SENAO" (ou if/else, para outras linguagens). O princípio do "SE" é universal! Entendendo ele, você entenderá o que está errado.

 

No aguardo.

 

 

adicionado 5 minutos depois

Para facilitar o entendimento, tente fazer esse problema verificando o ano, mas apenas exibindo "** VEÍCULO ISENTO **", ou "** NECESSÁRIO PAGAR IPVA **".

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

51 minutos atrás, Joao emilioborges disse:

@devair1010consegui cara depois de varias tentativas..obrigado a vocês ..

 

Por favor, poste aqui o seu código para podermos analisar e, quem sabe, também poder servir de ajuda para outros membros com dúvidas semelhantes.

 

No aguardo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

6 horas atrás, Simon Viegas disse:

Olá.

 

 

Por favor, poste aqui o seu código para podermos analisar e, quem sabe, também poder servir de ajuda para outros membros com dúvidas semelhantes.

 

No aguardo

//Processo
  se anof<=1988 então
Escreval("**********  VEÍCULO ISENTO *********")
 fimse
  se combus <> "gasolina"   então
ipva<-(2/100*preco)
  senao
ipva<-(4/100*preco)
fimse

se anof>1989 então
Escreval(">>Valor do IPVA                  R$: ",ipva:3:2)
fimse

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Antes: por favor, ao postar um código, utilize a tag CODE... botão <>.  Dê uma olhada nesta postagem:

 

Vamos lá:

 

Creio que o seu código está  "meio certo", pois, de certo modo ele (teoricamente) estará exibindo o resultado desejado, mas o processo contém algumas pequenas falhas... cito elas abaixo: (elas são interdependentes, mas vou tratá-las individualmente para explicar cada uma)

 

1) Está calculando o valor do IPVA mesmo que quando não é necessário.

2) Está verificando o ano duas vezes sem necessidade;

3) Não está tratando o ano de 1989 (experimente informar esse ano).

 

Para "resolver" o 3 (o mais fácil):

Bastaria ajustar o se, mudando de ">1989" para ">1988". (ou ">=1889"... vai funcionar, mais tem diferença lógica!!!)

se anof>1988 então

 

Para "resolver" o 1:

Você poderia colocar o trecho do cálculo dentro da verificação do ano maior que 1988...
 

se anof>1988 então
   se combus <> "gasolina" então
      ipva<-(2/100*preco)
   senao
      ipva<-(4/100*preco)
   fimse
   escreval(">>Valor do IPVA                  R$: ",ipva:3:2)
fimse

 

Para "resolver o 2":

Como ">1988" é justamente o que não é "<=1988", basta usar o "senão" daquele "SE"...

se anof<=1988 então
   Escreval("**  VEÍCULO ISENTO **")
senao
   se combus <> "gasolina" então
      ipva<-(2/100*preco)
   senao
      ipva<-(4/100*preco)
   fimse
   escreval(">>Valor do IPVA                  R$: ",ipva:3:2)     
fimse

 

 

***

 

Tente dá uma nova olhada no meu primeiro comentário e tente reanalisar os contextos...

 

Qualquer dúvida é só postar...

 

Obs.: outro questão muito importante é sobre a identação, é de fundamental importância!!! Sempre mantenha o seu código identado!

 

 

Caso deseje, poste o código completo que refazemos uma analise e, caso tenha dúvidas, identamos também...

 

 

 

No aguardo.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Esse trecho identado ficaria assim:

4 horas atrás, Joao emilioborges disse:

se anof>1988 então
   se combus <> "gasolina"   então  //dentro do se anof
      ipva<-(2/100*preco)           //dentro do se combus
   senao                            //senao do se comb 
      ipva<-(4/100*preco)           //dentro do senao do se combus
   fimse                            //fim do se combus/senao
   Escreval(">>Valor do IPVA                  R$: ",ipva:3:2) //dentro do se anof
senao                               //senao do se anof
   Escreval("**Veículo Isento**")   //dentro do senao do se anof
fimse                               //fim do seanof/senao

 

 

Veja que a identação basicamente faz "deixar um dente* pra frente em relação ao que ele está dentro"...   (* um dente eu deixei com 3 espaços)

 

Por favor, poste o código completo.

 

No aguardo.

adicionado 7 minutos depois

Por favor, tente identar o seu código seguindo o "padrão" que eu sugeri no código acima... ai dou uma olhada e corrijo se precisar...

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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