Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com algoritmo no VisuAlg


Ankur Prem

Pergunta

Olá galera,

Estou inserindo um algoritmo no VisuAlg que me parece realmente certo, contudo o programa não roda da forma esperada.

Segue o enunciado do problema:

Dados 3 valores A, B e C, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se compõem um triângulo eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum triângulo.

O que é um triângulo?

R: Figura geométrica de 3 lados, onde cada um é menor do que a soma dos outros dois

O que é um triângulo eqüilátero? R. Um triângulo com 3 lados iguais.

O que é um triângulo isóscele? R. Um triângulo com 2 lados iguais.

O que é um triângulo escaleno? Um triângulo com todos os lados diferentes.

Agora, o algoritmo que elaborei:

algoritmo "semnome"
//Dados 3 valores A, B e C, verificar se eles podem ser os comprimentos dos
//lados de um triângulo e, se forem, verificar se compõem um triângulo
//eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum
//triângulo.
var
l1, l2, l3: real
validade: logico
inicio
escreva ("Insira o lado 1 do triângulo: ")
leia (l1)
escreva ("Insira o lado 2 do triângulo: ")
leia (l2)
escreva ("Insira o lado 3 do triângulo: ")
leia (l3)

se (l1 < (l2 + l3)) e (l2 < (l1 + l3)) e (l3 < (l1 + l2)) então
   validade <- VERDADEIRO
senao
   validade <- FALSO
fimse

se (validade = VERDADEIRO) então
   se (l1 = l2) e (l1 = l3) e (l2 = l3) então
      escreva ("Triângulo equilátero")
   fimse
   se (l1 <> l2) xou (l1 <> l3) xou (l2 <> l3) então
      escreva ("Triângulo isóceles")
   fimse
   se (l1 <> l2) e (l1 <> l3) e (l2 <> l3) então
      escreva ("Triângulo escaleno")
   fimse
senao
   escreva ("Não é um triângulo")
fimse

fimalgoritmo

O que acontece:

- se as medidas não formam um triângulo, ok, a mensagem correta é retornada.

- se é um triângulo equilátero, também ok, a mensagem correta é retornada.

- se é um triângulo isóceles, nada aparece!

- se é um triângulo escaleno, aparece as mensagens tanto do isóceles como do escaleno.

E ai meus caros, o que acham? Pra mim o algoritmo está ok!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Caso resolvido!

O problema é realmente do algoritmo...

Vejam:

No caso de um triângulo isóceles, aonde...

l1=5

l2=5

l3=3

... não somente o l1 é diferente do l3, mas o l2 também é diferente do l3!

Como o XOU é excludente, ele retorna como FALSO ao encontrar duas proposições verdadeiras.

O erro é de lógica: apenas um dos lados é diferente, mas ele é diferente dos outros dois lados!

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, e quem se interessar pela solução:

algoritmo "semnome"
//Dados 3 valores A, B e C, verificar se eles podem ser os comprimentos dos
//lados de um triângulo e, se forem, verificar se compõem um triângulo
//eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum
//triângulo.
var
l1, l2, l3: real
validade: logico
inicio
escreva ("Insira o lado 1 do triângulo: ")
leia (l1)
escreva ("Insira o lado 2 do triângulo: ")
leia (l2)
escreva ("Insira o lado 3 do triângulo: ")
leia (l3)

se (l1 < (l2 + l3)) e (l2 < (l1 + l3)) e (l3 < (l1 + l2)) então
   validade <- VERDADEIRO
senao
   validade <- FALSO
fimse

se (validade = VERDADEIRO) então
   se (l1 = l2) e (l1 = l3) e (l2 = l3) então
      escreva ("Triângulo equilátero")
   fimse
   se ((l1 = l2) e (l1 <> l3)) xou ((l1 = l3) e (l1 <> l2)) xou ((l2 = l3) e (l2 <> l1)) então
      escreva ("Triângulo isóceles")
   fimse
   se (l1 <> l2) e (l1 <> l3) e (l2 <> l3) então
      escreva ("Triângulo escaleno")
   fimse
senao
   escreva ("Não é um triângulo")
fimse

fimalgoritmo

Link para o comentário
Compartilhar em outros sites

  • 0
Em ‎15‎/‎11‎/‎2012 at 12:22, Ankur Prem disse:

Olá galera,

 

Estou inserindo um algoritmo no VisuAlg que me parece realmente certo, contudo o programa não roda da forma esperada.

 

 

Segue o enunciado do problema:

 

Dados 3 valores A, B e C, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se compõem um triângulo eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum triângulo.

O que é um triângulo?

R: Figura geométrica de 3 lados, onde cada um é menor do que a soma dos outros dois

O que é um triângulo eqüilátero? R. Um triângulo com 3 lados iguais.

O que é um triângulo isóscele? R. Um triângulo com 2 lados iguais.

O que é um triângulo escaleno? Um triângulo com todos os lados diferentes.

 

 

Agora, o algoritmo que elaborei:

 

 

 

algoritmo "semnome"
//Dados 3 valores A, B e C, verificar se eles podem ser os comprimentos dos
//lados de um triângulo e, se forem, verificar se compõem um triângulo
//eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum
//triângulo.
var
l1, l2, l3: real
validade: logico
inicio
escreva ("Insira o lado 1 do triângulo: ")
leia (l1)
escreva ("Insira o lado 2 do triângulo: ")
leia (l2)
escreva ("Insira o lado 3 do triângulo: ")
leia (l3)

se (l1 < (l2 + l3)) e (l2 < (l1 + l3)) e (l3 < (l1 + l2)) então
   validade <- VERDADEIRO
senao
   validade <- FALSO
fimse

se (validade = VERDADEIRO) então
   se (l1 = l2) e (l1 = l3) e (l2 = l3) então
      escreva ("Triângulo equilátero")
   fimse
   se (l1 <> l2) xou (l1 <> l3) xou (l2 <> l3) então
      escreva ("Triângulo isóceles")
   fimse
   se (l1 <> l2) e (l1 <> l3) e (l2 <> l3) então
      escreva ("Triângulo escaleno")
   fimse
senao
   escreva ("Não é um triângulo")
fimse

fimalgoritmo

 

 

 

O que acontece:

- se as medidas não formam um triângulo, ok, a mensagem correta é retornada.

- se é um triângulo equilátero, também ok, a mensagem correta é retornada.

- se é um triângulo isóceles, nada aparece!

- se é um triângulo escaleno, aparece as mensagens tanto do isóceles como do escaleno.

 

E ai meus caros, o que acham? Pra mim o algoritmo está ok!

Olá a minha professora passou uma atividade e preciso de ajuda;

1- Implementar um código que calcule o Perímetro de um triangulo. Este código deve verificar a existência de um triangulo e dizer se este é isósceles, equilátero ou escaleno.

o compilador a usar é o Fortran me ajude. Vou pagar pra fazer. 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...