Jump to content
Fórum Script Brasil
  • 0

Problema com algoritmo no VisuAlg


Ankur Prem

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...