Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ph1

Comparação de strings no Visualg

Recommended Posts

Prazer para todos.

Fiz este exercício para calcular as calorias gastas em uma refeição. Entra com prato, bebida e sobremesa. O problema está em comparar as strings. O VisualG não aceita a comparação. Por exemplo, entro com a string carne, o programa diz: esperava encontrar então na linha se (prato = carne) então. Não há explicação possível para esse problema. Não sei onde está o erro, para mim, a lógica está correta. Obrigado.

Algoritmo "semnome"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   :
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 02/10/2017
Var
// Seção de Declarações das variáveis
cal1,cal2,cal3,p1,p2,p3,caltotal:inteiro
prato,bebida,sobremesa:caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...

escreval("Entre com o prato")
leia (prato)
escreval(prato)
se (prato = carne) então
 cal1 <- 350
senão se (prato = peixe) então
         cal1 <- 230
      senão se (prato = frango) então
               cal1 <- 250
            senão
               cal <- 180
            fimse
      fimse
fimse
escreval("Entre com a bebida")
leia (bebida)
se (bebida = cha) então
 cal2 <- 20
senão se (bebida = suco de laranja) então
         cal2 <- 100
      senão se (bebida = suco de melao) então
                cal2 <- 100
            senão se (bebida = refrigerante diet) então
                     cal <- 65
                  fimse
            fimse
      fimse
fimse
escreval("Entre com a sobremesa")
leia (sobremesa)
se (sobremesa = abacaxi) então
 cal3<- 75
senão se (sobremesa = sorvete diet) então
         cal <- 110
      senão se (sobremesa = mouse diet) então
               cal3 <- 170
            senão se (sobremesa = mouse chocolate) então
                    cal <- 200
                  fimse
            fimse
      fimse
fimse
senão
escreval ("Opção inválida.")
caltotal <- cal1 + cal2 + cal3
escreval("O prato escolhido foi: ",prato)
escreval("A bebida escolhida foi: ",bebida)
escreval("A sobremesa escolhida foi: ",sobremesa)
escreval("O total de calorias é de: ",caltotal)
Fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, tudo bem? Encontrei 2 erros, pra começar:

 

1. As palavras-chave do Visualg são escritas sem acento, então você está errando nas palavras "então" e "senão" que devem ser "entao" e "senao", por isso seu algoritmo dá erro.

 

2. Você está fazendo a comparação do que o usuário escreveu, que é uma string, tudo que for string, seja no Visualg, seja em qualquer outra linguagem de programação deve ser colocada aspas. A sua linha:

se (prato = carne) então

Deve ser escrita:

se (prato = "carne") entao

Replique isso para o resto do código e vai funcionar.

 

Outra coisa que notei:

 

Ali na primeira estrutura de decisão, você termina com 3 "fimse", mas basta 1. Se deixar como está vai ver um erro no Visualg dizendo que tem um "fimse" sem um "se" correspondente, o mesmo para as outras estruturas de decisão do seu algoritmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.