Ir ao conteúdo
  • Cadastre-se

Algoritmo no VisualG que calcula temperatura não funciona os cálculos


Visitante
Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Fiz um algoritmo que transforma a temperatura seja em Celsius, Fahrenheit, Kelvin ou Rankine para as outras, exemplo de C para F, K e R. Porém o algoritmo não faz os cálculos, simplesmente da o resultado 0 pata todos os valores. Segue o algoritmo:

var  tempe, C, F, K, R : literal  num, Z, W, X, Y : realinicio// Seção de Comandos  escreval("Digite qual temperatura está, C, K, F ou R e pressione ENTER:")    leia(tempe)  escreval("Digite o valor numérico da temperatura e pressione ENTER:")    leia(num)// Caso Seja Celsius  se(tempe = C) então    Z <- num    W <- (num * 1.8) + 32    X <- num + 273    Y <- (num * 1.8) + (273 * 1.8)  fimse    // Caso Seja Fahrenheit  se(tempe = F) então    W <- num    Z <- (num * 32) * (9 / 5)    X <- ((num - 32) + (5 / 9)) + 273    Y <- num + 460  fimse  // Caso Seja Kelvin  se(tempe = K) então    X <- num    Z <- num - 273    W <- ((num * 1.8) - (273 * 1.8)) + 32    Y <- (9 / 5) * (num / 5)  fimse    // Caso Seja Rankine  se(tempe = R) então    Y <- num    Z <- ((num * 5) - (492 * 5)) / 9    W <- num - 460    X <- (num * 5) / 9  fimse    // Respostas  escreval("O valor em C é:", Z)  escreval("O valor em F é:", W)  escreval("O valor em K é:", X)  escreval("O valor em R é:", Y)  escreval("Valores aproximados.")fimalgoritmo
Agradeço.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Vou tentar ser direto, ok?

 

1) Nas seleções (se/então), você está comparando o conteúdo de uma variável com outra, em vez do conteúdo com um caractere.

 

ex.:

se (tempe = C) entao

creio que o correto seria algo como:

se (tempe = 'C') entao

2) Declarações de variáveis.

 

Ainda relacionada a questão anterior.

var  tempe, C, F, K, R : literal  num, Z, W, X, Y : realinicio

O "C", "F", "K" e "R" são "caracteres usados como referência", e não uma variável, ou seja, "se tempe conter 'C', trata como Celsius"... e por ai vai. Não precisa (e nem deve) declara essas variáveis.

 

 

 

3) Questão de definição

É apenas um detalhe, mas não custa comentar... Onde se tem "// Caso Seja Celsius", de certo modo deveria ser "// se for Celsius"... isso, porque, existe tanto a estrutura "se", tanto a estrutura "caso" no VisuAlg, entende? Pelo menos para mim fica um pouco estranho "citar uma coisa", e executar outra... :D.

 


4) Questão de lógica

 

Como é fácil analisar, as condições de comparações são "mutuamente exclusivas entre si", ou seja, se for um, não pode ser outro. (não pode ser 'C' e ao mesmo tempo 'F', correto?), logo, deveria usar a estrutura do "senão". (sugiro fazer primeiramente só com o se/então, depois de pronto, insere o "se/então/senão").

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Olá.

 

Vou tentar ser direto, ok?

 

1) Nas seleções (se/então), você está comparando o conteúdo de uma variável com outra, em vez do conteúdo com um caractere.

 

ex.:

se (tempe = C) então

creio que o correto seria algo como:

se (tempe = 'C') então

2) Declarações de variáveis.

 

Ainda relacionada a questão anterior.

var  tempe, C, F, K, R : literal  num, Z, W, X, Y : realinicio

O "C", "F", "K" e "R" são "caracteres usados como referência", e não uma variável, ou seja, "se tempe conter 'C', trata como Celsius"... e por ai vai. Não precisa (e nem deve) declara essas variáveis.

 

 

 

3) Questão de definição

É apenas um detalhe, mas não custa comentar... Onde se tem "// Caso Seja Celsius", de certo modo deveria ser "// se for Celsius"... isso, porque, existe tanto a estrutura "se", tanto a estrutura "caso" no VisuAlg, entende? Pelo menos para mim fica um pouco estranho "citar uma coisa", e executar outra... :D.

 

4) Questão de lógica

 

Como é fácil analisar, as condições de comparações são "mutuamente exclusivas entre si", ou seja, se for um, não pode ser outro. (não pode ser 'C' e ao mesmo tempo 'F', correto?), logo, deveria usar a estrutura do "senão". (sugiro fazer primeiramente só com o se/então, depois de pronto, insere o "se/então/senão").

 

 

No aguardo.

valeu cara, depois de ler o seu post resolvi desse jeito:

var  tempe : inteiro  num, Z, W, X, Y : realinicio// Seção de Comandos    escreval("Para C = 1 ; F = 2 ; K = 3 ; R = 4")  escreval("Digite qual temperatura está, C, K, F ou R e pressione ENTER:")    leia(tempe)  escreval("Digite o valor numérico da temperatura e pressione ENTER:")    leia(num)  se(tempe = 1) então    Z <- num    W <- (num * 1.8) + 32    X <- num + 273    Y <- (num * 1.8) + (273 * 1.8)  fimse      se(tempe = 2) então    W <- num    Z <- (num * 32) * (9 / 5)    X <- ((num - 32) + (5 / 9)) + 273    Y <- num + 460  fimse    se(tempe = 3) então    X <- num    Z <- num - 273    W <- ((num * 1.8) - (273 * 1.8)) + 32    Y <- (9 / 5) * (num / 5)  fimse      se(tempe = 4) então    Y <- num    Z <- ((num * 5) - (492 * 5)) / 9    W <- num - 460    X <- (num * 5) / 9  fimse    // Respostas  escreval("O valor em C é:", Z)  escreval("O valor em F é:", W)  escreval("O valor em K é:", X)  escreval("O valor em R é:", Y)  escreval("Valores aproximados.")fimalgoritmo
 
Creio que o problema estava na parte de comprar "tempe" com "C" ou outra variável mesmo.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Olá.

 

1)

Em relação a seleção, a ideia é a mesma. A diferença é que está utilizando números, em vez de caracteres, entende? Veja que não é preciso declarar os números 1, 2, 3 e 4, pois eles são um "dados", e não uma variável.

 

Poderia ficar algo mais ou menos assim também:

  tempe : literal  num, Z, W, X, Y : real

e

se (tempe = 'C') então

obs.: A letra "C" tem que está em maiúsculo para esse caso. ;)
 

 

2)

Faltou inserir o SENÃO, já que se trata de proposições mutuamente exclusivas entre si, o que pode ser considerado um erro de lógica. (oras! se foi escolhido o 1, por quê está verificando o 2, 3 e 4??)

 

Se achar que já está bom desta forma, avisa também que fechamos o tópico.

 

No aguardo.
 

 

 

 

 

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