Ir ao conteúdo
  • Cadastre-se
Sundice

VisualG Operadores Lógicos dentro do "SE"

Recommended Posts

Olá pessoal! Sou novo aqui e no mundo da programação! :c

Então... Tenho um problema.


Estou começando a estudar algoritmos e o VisualG me retorna um erro quando tento executar esse código:

algoritmo "triang"
var
   a, b, c: real
inicio
      Escreval ("Olá. Vou te informar o tipo de triangulo baseado em seus lados.")
      Escreva ("Informe o tamanho do lado A. ")
      leia (a)
      Escreva ("Informe o tamanho do lado B. ")
      leia (b)
      Escreva ("Informe o tamanho do lado C. ")
      leia (c)
      Se (a + b >= c) e (a + c >= B) e (b + c >= a) então
         Se (a = b = c) então
            Escreva("O seu triangulo é equilatero.")
         FimSe
         Se (a = b <> c) ou (a = c <> B) ou (b = c <> a) então
            Escreva("O seu triangulo é isósceles.")
         FimSe
         Se (a <> b <> c) então
            Escreva("O seu triangulo é escaleno.")
         FimSe
      SENAO
           Escreva("Essas medidas nao formam um triangulo.")
      FimSe
fimalgoritmo

Alguém pode me explicar o que ta errado? :/

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade isso foi uma má-nota minha quando coloquei aqui no forum. Escrevo os comandos em caixa alta e fui mudar antes de colocar aqui e coloquei com acentuação, mas no visualg não estão não. Estão assim:

Citação

var
   a, b, c: real
inicio
      Escreval ("Olá. Vou te informar o tipo de triangulo baseado em seus lados.")
      Escreva ("Informe o tamanho do lado A. ")
      leia (a)
      Escreva ("Informe o tamanho do lado B. ")
      leia (b)
      Escreva ("Informe o tamanho do lado C. ")
      leia (c)
      Se (a + b >= c) e (a + c >= B) e (b + c >= a) então
         Se (a = b = c) então
            Escreva("O seu triangulo é equilatero.")
         FimSe
         Se (a = b <> c) ou (a = c <> B) ou (b = c <> a) então
            Escreva("O seu triangulo é isósceles.")
         FimSe
         Se (a <> b <> c) então
            Escreva("O seu triangulo é escaleno.")
         FimSe
      SENAO
           Escreva("Essas medidas nao formam um triangulo.")
      FimSe
fimalgoritmo


Ele retorna o erro "Esperava encontrar então".
É possível que seja devido ao operador 'e' dentro do comando 'se'? Vi que outras pessoas tiveram problemas parecidos mas não encontrei nenhuma solução... :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a tag <code> para postar o código, veja orientação no alto da página. Aguarde outras opinioes sobre esse erro.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita, quando eu posto ta corrigindo automático '-' (tanto na code quanto na quote)
Segue usando a tag <code> 

var
   a, b, c: real
inicio
      Escreval ("Olá. Vou te informar o tipo de triangulo baseado em seus lados.")
      Escreva ("Informe o tamanho do lado A. ")
      leia (a)
      Escreva ("Informe o tamanho do lado B. ")
      leia (b)
      Escreva ("Informe o tamanho do lado C. ")
      leia (c)
      Se (a + b >= c) e (a + c >= b) e (b + c >= a) então
         Se (a = b = c) então
            Escreva("O seu triangulo é equilatero.")
         FimSe
         Se (a = b <> c) ou (a = c <> b) ou (b = c <> a) então
            Escreva("O seu triangulo é isósceles.")
         FimSe
         Se (a <> b <> c) então
            Escreva("O seu triangulo é escaleno.")
         FimSe
      SENAO
           Escreva("Essas medidas nao formam um triangulo.")
      FimSe
fimalgoritmo

Screenshot:Picture1.thumb.png.7ab1036f65ff84ef162692401c77c5ec.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

4 horas atrás, Sundice disse:

Então... Tenho um problema.


Estou começando a estudar algoritmos e o VisualG me retorna um erro quando tento executar esse código:

 

Que erro? Como costumo comentar... o natural aqui no fórum é que tenha erros mesmo, caso contrário não estaria solicitando apoio... :), ou seja, seria necessário informar o que você está identificando como errado.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
39 minutos atrás, Sundice disse:

Ele retorna o erro "Esperava encontrar então".
É possível que seja devido ao operador 'e' dentro do comando 'se'? Vi que outras pessoas tiveram problemas parecidos mas não encontrei nenhuma solução... :/

@Simon Viegas Esse erro que citei.
Sempre que tento escrever "então" em caixa alta e sem acento aqui no fórum, a postagem acontece corrigida para "então" em letra minúscula e acentuado automaticamente, mas no codigo esta escrito como na screenshot do código.


Agradeço a prestatividade!

 

Segue screenshot do erro:
Picture2.png.5f957735387ae6ebadeeed1496daa11a.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Aqui deu erro nesta linha:
 

13 minutos atrás, Sundice disse:

se (a = b = c) ENTÃO

 

Seria o seguinte: cada uma das expressões no se só tem dois membros.. assim como numa equação matemática (lado esquerdo e lado direito). No meio tem o "Operador Relacional." Daí, como são 3 "valores", poderia dividir em duas expressões... ai usa um "Operador Lógico" para correlacionar, ex.:

se (a = b) E (a = c) ENTÃO

 

...a mesma lógica vale para outras partes.

Vide um pouco sobre aqui:
http://eletrica.ufpr.br/~rogerio/visualg/Help/linguagem2.htm

 

RESUMINDO:
A forma que você fez tem lógica, mas não faz parte da sintaxe do Visualg. Ele não entende essa estrutura.

adicionado 1 minuto depois
agora, Sundice disse:

@Simon Viegas Esse erro que citei.

Erro meu... só reparei depois, rs.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Funcionou!
Segue Screenshot do código corrigido:

 

Picture3.png.09528d1b0cf79358d97de7034dda869a.png

 

Tava quebrando cabeça aqui! haha Ajudou demais. Obrigado!
Acho que pode fechar né?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não, pera...

adicionado 9 minutos depois

A dica é o seguinte... tente sempre se aprofundar um pouco no tema do exercício... se é sobre triângulo, leia um pouco sobre eles.

Do que lembro e revisei na internet.. temos pelo menos:

- A condição de existência dos triângulos está errada (vi pela condição). Mas na prática dar pra ver também...

um triângulo de lados 1, 1 e 2  está dando como isósceles.. agora tente ai desenhar esse triângulo com uma régua. :D

 

- É possível um triângulo ser mais de um tipo ao mesmo tempo? se não pode, tem que ter SENAO  nos se. Se sim, é preciso também ajustar e ver se precisa de SENAO entre eles.

 

- Essa classificação é apenas quanto aos lados.. seria interessante relatar isso no contexto, pois pode existir outras classificações, como relacionado aos ângulos (que também dá para verificar tendo os lados).

 

Etc.

adicionado 10 minutos depois

PS: poste o código em forma de texto mesmo. Pois na imagem não dar para copiar (pelo menos de forma prática, rs).

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

23 minutos atrás, Simon Viegas disse:

- A condição de existência dos triângulos está errada (vi pela condição). Mas na prática dar pra ver também...

um triângulo de lados 1, 1 e 2  está dando como isósceles.. agora tente ai desenhar esse triângulo com uma régua. :D

Nossa, foi uma má nota minha no código mesmo. Eu sabia que era só a+b>c ou a+c>b ou b+c>a MAAAAS coloquei >= no embalo :/ como não é um curso ou nada do gênero, e sim estudo por conta própria, eu nem ia me atinar se você não falasse hahah
 

26 minutos atrás, Simon Viegas disse:

- É possível um triângulo ser mais de um tipo ao mesmo tempo? se não pode, tem que ter SENAO  nos se. Se sim, é preciso também ajustar e ver se precisa de SENAO entre eles.

Essa parte eu não entendi... Por exemplo: um triangulo não pode ser escaleno e equilátero ao mesmo tempo (com relação a classificação referente ao tamanho de seus lados). Qual a aplicabilidade do SENAO nessa situação? (ainda não aprendi a falar "senão, não faça nada" nos códigos, e aqui rodou exatamente como eu esperava que rodasse.)
 

31 minutos atrás, Simon Viegas disse:

- Essa classificação é apenas quanto aos lados.. seria interessante relatar isso no contexto, pois pode existir outras classificações, como relacionado aos ângulos (que também dá para verificar tendo os lados).

Boa observação. Vou adicionar a informação.

 

E pega leve comigo, é meu primeiro dia! kkkkkkkk (Literalmente. Baixei os ebooks ontem a noite e comecei hoje pela manhã)

Segue o código com as alterações:

algoritmo "triang"
var
   a, b, c: real
inicio
      Escreval("Olá. Vou te informar o tipo de triangulo baseado no tamanho de seus lados")
      Escreval("Diga as dimensões e te direi se ele é isósceles, equilátero ou escaleno.")
      Escreva("Informe o tamanho do lado A. ")
      leia(a)
      Escreva("Informe o tamanho do lado B. ")
      leia(b)
      Escreva("Informe o tamanho do lado C. ")
      leia(c)
      Se(a+b>c) e (a+c>b) e (b+c>a) então
         Se (a=b) e (a=c) então
            Escreva("O seu triangulo é equilatero.")
         FimSe
         Se ((a=b) e (a<>c)) ou ((a=c) e (a<>b)) ou ((b=c) e (b<>a)) então
            Escreva("O seu triangulo é isósceles.")
         FimSe
         Se (a<>b) e (a<>c) e (b<>c) então
            Escreva("O seu triangulo é escaleno.")
         FimSe
      SENAO
           Escreva("Essas medidas nao formam um triangulo.")
      FimSe
fimalgoritmo

De novo, Obrigado!

 

E mais uma dúvida: Por que meu "então" ta sendo corrigido automaticamente nas postagens aqui no fórum?  :lol: Originalmente ta escrito sem acentuação e em caixa alta.

 

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

1#
Sobre:

 

2 horas atrás, Sundice disse:

Nossa, foi uma má nota minha no código mesmo. Eu sabia que era só a+b>c ou a+c>b ou b+c>a MAAAAS coloquei >= no embalo :/ como não é um curso ou nada do gênero, e sim estudo por conta própria, eu nem ia me atinar se você não falasse hahah

 

Normal...  é confudível mesmo... ">" e ">=" são próximos.

 

 


2#
Sobre:

2 horas atrás, Sundice disse:

Essa parte eu não entendi... Por exemplo: um triangulo não pode ser escaleno e equilátero ao mesmo tempo (com relação a classificação referente ao tamanho de seus lados).

OK, eu comentei justamente para provocar... se analisar bem, verás que depende das "definições de cada classificação". Por exemplo, botei no "Google" a pesquisa "triângulo isósceles".

 

No primeiro resultado tem:

Citação

Triângulo equilátero: possui os três lados com medidas iguais. Triângulo isósceles: possui dois lados com medidas iguais. Triângulo escaleno: possui os três lados com medidas diferentes. Triângulo acutângulo: possui todos os ângulos com medidas menores que 90º.

Fonte: mundoeducacao.bol.uol.com.br/matematica/classificacao-triangulos.htm

Tá! veja a frase "possui dois lados com medidas iguais". Então, os equiláteros tem 3 lados iguais... logo, segundo essa definição, todo equilátero é isósceles também...

 

e aí?

 

Mas vamos lá... no Wikipedia temos:

Citação

Triângulo Escaleno

Um triângulo é escaleno se, e somente se, dois quaisquer lados não são congruentes.

Isso significa que em um triângulo escaleno as medidas dos três lados são diferentes. Assim, os ângulos internos de um triângulo escaleno também possuem medidas diferentes.

Ou seja, esse "se, e somente se" limita que somente é válido para o caso específico. Tem que ter 2, e somente 2 lados iguais... o que é diferente de "ter 2" ou "possuir 2". O "ter/possuir" significa "conter pelo menos". Por exemplo:

 

"Quantos meses do ano tem/possuem 30 dias"?
Resposta: 11. Só fevereiro que não tem. (o senso comum tende a contar os meses que tem exatamente 30 dias, o que. nesse sentido, seria um erro).

 

Qual é a definição certa? "ter exatamente  2" ou "ter 2"?


Veja que interessante! na página do Isósceles lá no Wikipedia tem referências à página "https://alunosonline.uol.com.br/matematica/propriedades-triangulo-isosceles-equilatero.html". E dentro dela tem:
 

Citação

Quanto aos triângulos equiláteros

É importante lembrar que o triângulo equilátero recebe esse nome por que possui 3 lados iguais. Sendo assim, note que todo triângulo equilátero é também isósceles. Isso por que, olhando apenas dois de seus lados e ignorando o terceiro, observa-se um triângulo isósceles. Dessa forma, as duas propriedades acima são válidas para o triângulo equilátero assim como para o triângulo isósceles.


:confused:
 

Ou seja, seria necessário primeiro saber de fato o que é um isósceles, para depois tentar classificar...

 

ADENDO: claro que não precisa ser tão precioso.... mas é interessante pelo menos abrir a mente aos contextos...


 

 

3#

Sobre:

2 horas atrás, Sundice disse:

Qual a aplicabilidade do SENAO nessa situação? (ainda não aprendi a falar "senão, não faça nada" nos códigos, e aqui rodou exatamente como eu esperava que rodasse.)

 

Esse "senão, não faça nada" já é o papel do se puro. É assim: "se a condição do se resulta em VERDADEIRO, executa o que está dentro do se.  Se resultar em FALSO, 'não faz nada'".
 

Já o senão, seria algo como: "só execute as instruções associada a mim, se a condição do se (associado ao senão) resultar em FALSO, ou seja, se os lados formam um triângulo, a parte que "não é triângulo" não é executada (não precisaria)... pois se "é", necessariamente não pode ser "não é".


Veja que o "aprendizado" é uma cadeia... primeiro aprende com funciona o se. Ai depois aprende como funciona o se/senão..
 

Complementando..  Se o senão não existisse, teria que fazer duas perguntas, algo como:

se (a+b >= c) e (a+c >= b) e (b+c >= a) ENTÃO //se os lados seguem a condição de existência de um triângulo
   ... //então é um triângulo 
se nao ((a+b >= c) e (a+c >= b) e (b+c >= a)) ENTÃO ////se os lados não seguem a condição de existência de um triângulo
   ...//então não é um triângulo


Como existe o senão, poderia ficar assim:

se (a+b >= c) e (a+c >= b) e (b+c >= a) ENTÃO //se os lados seguem a condição de existência de um triângulo
   ... //então é um triângulo 
senao
   se nao ((a+b >= c) e (a+c >= b) e (b+c >= a)) ENTÃO ////se os lados não seguem a condição de existência de um triângulo
      ...//então não é um triângulo


Mas veja, como OU os lados formam um triângulo OU os lados não formam um triângulo... Uma condição é mutuamente excludente da outra... perceba que (tirando aqueles, por exemplo, âmbitos "atípicos" do mundo quântico, rs) um coisa NÃO podem ser duas coisas "antagônicas" ao mesmo tempo... OU é triângulo, OU é não é um triângulo. Ou é verdadeiro, ou é falso. Ou é torço pro Bahia, ou eu torço pro Vicitória.. correto? não errado! No caso de torcer, não existe impedimento lógico.. eu posso torcer pros 2!!! (seria estranho? seria, mas eu posso!).

Então, no caso das condições excludentes entre si, se a condição anterior for verdadeira, não precisa também verificar se ela é falsa... o SENAO só será executado se o se for falso. Daí, no contexto, se de fato «não pode ser escaleno e equilátero ao mesmo tempo», ao ser um, não necessitaria continuar verificando se pode ser um outro... seria algo como:

algoritmo "FCdH"
var
   a, b, c: real
inicio
escreval("Olá. Vou te informar o tipo de triangulo baseado em seus lados.")
escreva ("Informe o tamanho do lado A. ")
leia(a)
escreva ("Informe o tamanho do lado B. ")
leia(b)
escreva("Informe o tamanho do lado C. ")
leia(c)
se (a+b > c) e (a+c > b) e (b+c > a) ENTÃO
   se (a = b) E (A = c) ENTÃO
      escreva("O seu triangulo é equilatero.")
   senao
      se ((a = b) e (a <> c)) OU ((a = c) E (c <> b)) OU ((b = c) E (c <> a)) ENTÃO
         escreva("O seu triangulo é isósceles.")
      senao
         se (a <> b) E (a <> c) ENTÃO //perceba que esse se é desnecessário pois, necessariamente será escaleno
            escreva("O seu triangulo é escaleno.")
         fimSe //fim escaleno
      fimSe //fim isóscele
   fimSe //fim equilátero
senao
   escreva("Essas medidas nao formam um triangulo.")
fimSe //sim condição de existência
fimAlgoritmo

Perceba que as 3 definições são excludentes entre si.. se for a primeira, NÃO será a segunda, e NEM será a terceira... (e vice-versa). Se existir a possibilidade ser ao mesmo tempo (como torcer para dois times), teria que montar "outro algoritmo".


Dica: é possível testar o código linha a linha, basta ir pressionando F8... por exemplo, digite lados que você tem certeza que representa um tipo.. ai vai pressionando F8 e vai acompanhando o fluxo que o Visualg. Verás que quando um se dá VERDADEIRO, entra no SE, e pula para logo após o SENÃO do referido se  (após o fimse).
Obs.: no Visual não dá para ver exatamente para onde pula, ao final do se, vai direto para próxima instrução... mas dá para entender/deduzir o fluxo.
Dica 2.: Ao pressionar Ctrl+G, o Visualg indenta o código para você! A depender, reajusta de acordo com o gosto.
Dica 3: O Visualg tem uma tabulação "inteligente" que faz o tab indentar estranhamente (acho que de acordo com a palavra de cima), para fazer sempre pular espaços fixos, basta desabilitar o recurso. Veja:

Desativar tabulação inteligente.gif

 

Assim, o espaçamento fica padronizado.

***

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 horas atrás, Simon Viegas disse:

2#
Sobre:

Nesse caso então, caí num erro meio besta:

--Algorítmo não é sobre programar, é sobre resolver problemas.

Eu fui tão na pressa de compor o código que na verdade não me dei o trabalho de pesquisar e fui direto pro software. hahah

Fui só com a bagagem de escola. Vou me atentar mais.

 

Citação

Aprendido >>> Colocar "SEs" dentro de "SENAOs" então, poupa etapas de verificação

 

--

 

12 horas atrás, Simon Viegas disse:

3#

Sobre:

 

A luz começou a entrar na cabeça, mas parece quem tem mais um monte de coisa que vou precisar voltar aqui pra perguntar hahah

 

--

13 horas atrás, Simon Viegas disse:

Dica:

 

Anotado

 

13 horas atrás, Simon Viegas disse:

Dica 2

 

Eu até conhecia o comando mas eu dou Tab meio no automático.

 

13 horas atrás, Simon Viegas disse:

Dica 3

 

Salvou minha vida hahahah eu tava morrendo de nervoso de ter que consertar os espaços um a um.

 

--

 

Caraaaaaaamba, segundo dia e já to tiltado hahah

É simples, mas é complicado!:muro: 

 

Segue o código da forma que acredito estar mais coerente:

 

algoritmo "triang"
var
   a, b, c: real
inicio
      Escreval("Olá. Vou te informar o tipo de triangulo baseado no tamanho de seus lados")
      Escreval("Diga as dimensões e te direi se ele é isósceles, equilátero ou escaleno.")
      Escreva("Informe o tamanho do lado A. ")
      leia(a)
      Escreva("Informe o tamanho do lado B. ")
      leia(b)
      Escreva("Informe o tamanho do lado C. ")
      leia(c)
      Se(a+b>c) e (a+c>b) e (b+c>a) então // Se for um triangulo.
         Se (a<>b) e (a<>c) e (b<>c) então //aqui a situação é excludente das outras pois um escaleno possui 3 lados diferentes
            Escreva("O seu triangulo é escaleno.")
         SENAO
            Se (a=b) e (a=c) então // sendo um equilatero, sempre isósceles, justificam-se dois SEs
               Escreva("O seu triangulo é equilatero.")
            FimSe //FIMSE equilatero
            Se (a=b) ou (a=c) ou (b=c) então // contudo, um isósceles não necessariamente é equilátero
               Escreva("O seu triangulo é isósceles.")
            FimSe //FIMSE isósceles
         FimSe //FIMSE escaleno
      SENAO
           Escreva("Essas medidas nao formam um triangulo.")
      FimSe
fimalgoritmo

Vou tentar ir com menos sede ao pote!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1#
A indentação ficou igual (veja  que o espaçamento começa depois do INICIO... fica muito estranho).. ou seja, não usou Ctrl+G, nem desativou a "tabulação inteligente".

Dica 3: se selecionar um texto e pressionar "TAB" ou "Shift+TAB", o texto selecionado avança ou retrocede um dente respectivamente.

 

Eu particularmente deixaria assim:

algoritmo "triang"
var
   a, b, c: real
inicio
escreval("Olá. Vou te informar o tipo de triangulo baseado no tamanho de")
escreval("lados seus")
escreval("Diga as dimensões e te direi se ele é isósceles, equilátero ou")
escreval("escaleno.")
escreva ("Lado A: ")
leia(a)
escreva ("Lado B. ")
leia(b)
escreva ("Lado C. ")
leia(c)
se (a+b>c) e (a+c>b) e (b+c>a) então //se é um triangulo
   se (a<>b) e (a<>c) e (b<>c) então //se todos os lados diferentes
      escreval("O seu triangulo é escaleno.")
   SENAO
      se (a=b) e (a=c) ENTÃO //se todos os lados são iguais
         escreval("O seu triangulo é equilatero.")
      fimSe //FIMSE equilatero
      se (a=b) ou (a=c) ou (b=c) ENTÃO //se pelo menos 2 lados forem iguais
         escreval("O seu triangulo é isósceles.")
      fimSe //FIMSE isósceles
   fimSe //FIMSE escaleno
SENAO
   escreva("Essas medidas nao formam um triangulo.")
fimSe
fimAlgoritmo

 

Resumindo:
Dá um ctrl+g, depois seleciona o texto da parte do corpo e dá um ctrl+tab. Pronto! (com isso, eu economizo um dente)

 

 

 

2#

Em relação a um "equilátero ser também isósceles", eu não tenho certeza!! Apenas levantei a possibilidade... seria necessário pesquisar mais (o que importa é a definição do que é um isósceles!!!)... a depender faça os dois códigos. Um sendo e outro não... Tentei analisar o que faz mais sentido, mas todos os 2 me parecem bem coerentes... talvez seja mais simples e prático entender que um equilátero NÃO seja um isósceles... já que a ideia é classificar de um modo que diferencia  também.

 

 

 

3#

No "time" que um equilátero é um isósceles, o código poderia ficar assim:

algoritmo "triang"
var
   a, b, c: real
inicio
escreval("Olá. Vou te informar o tipo de triangulo baseado no tamanho de")
escreval(" lados seus")
escreval("Diga as dimensões e te direi se ele é isósceles, equilátero ou")
escreval("escaleno.")
escreva ("Lado A: ")
leia(a)
escreva ("Lado B. ")
leia(b)
escreva ("Lado C. ")
leia(c)
se (a+b>c) e (a+c>b) e (b+c>a) então // Se for um triangulo
   se (a<>b) e (a<>c) e (b<>c) então //aqui a situação é excludente das outras pois um escaleno possui 3 lados diferentes
      escreval("O seu triangulo é escaleno.")
   SENAO
      se (a=b) ou (a=c) ou (b=c) ENTÃO // contudo, um isósceles não necessariamente é equilátero
         escreval("O seu triangulo é isósceles.")
         se (a=b) e (a=c) ENTÃO //sendo um equilatero, sempre isósceles, justificam-se dois SEs
            escreval("O seu triangulo é equilatero.")
         fimSe //FIMSE equilatero
      fimSe //FIMSE isósceles
   fimSe //FIMSE escaleno
SENAO
   escreva("Essas medidas nao formam um triangulo.")
fimSe
fimAlgoritmo

Ou seja, só será equilátero, se antes for isósceles.

 

3.1#

Nesse sentido, perceba que se não é escaleno, necessariamente seria isósceles... logo:

   se (a<>b) e (a<>c) e (b<>c) então //aqui a situação é excludente das outras pois um escaleno possui 3 lados diferentes
      escreval("O seu triangulo é escaleno.")
   SENAO
      escreval("O seu triangulo é isósceles.")
      se (a=b) e (a=c) ENTÃO //se é isósceles, pode ser equilátero
         escreval("O seu triangulo é equilatero.")
      fimSe //FIMSE equilatero
   fimSe //FIMSE escaleno



4#
Fica ai o desafio de inserir as outras classificações... veja se é viável ou não.

 

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Simon Viegas disse:

Eu particularmente deixaria assim:

Realmente ficou melhor aparentado

 

1 hora atrás, Simon Viegas disse:

2#

Em relação a um "equilátero ser também isósceles", eu não tenho certeza!! Apenas levantei a possibilidade... seria necessário pesquisar mais (o que importa é a definição do que é um isósceles!!!)... a depender faça os dois códigos. Um sendo e outro não... Tentei analisar o que faz mais sentido, mas todos os 2 me parecem bem coerentes... talvez seja mais simples e prático entender que um equilátero NÃO seja um isósceles... já que a ideia é classificar de um modo que diferencia  também.

Sobre isso:

 

Tinha dado uma pesquisada ontem e realmente >> Todo equilátero é isósceles, mas nem todo isósceles é equilátero.

Agora não me lembro as outras fontes mas busquei agora e aqui tem :

https://interna.coceducacao.com.br/ebook/pages/475.htm

 

1 hora atrás, Simon Viegas disse:

3#

No "time" que um equilátero é um isósceles, o código poderia ficar assim:

 Dessa forma, eu consigo pular uma etapa de verificação, deixando a leitura melhor otimizada. Saquei.

 

1 hora atrás, Simon Viegas disse:

3.1#

Nesse sentido, perceba que se não é escaleno, necessariamente seria isósceles... logo:

Saaaaaaaaquei de novo:

Se é triangulo e não é escaleno, é isósceles, sendo então a única verificação necessária após isso, a de ser equilátero ou não.

 

Essa otimização em situações mais complexas economiza recursos da máquina?

 

--

 

Segue o código:

algoritmo "triangulos"
var
   a, b, c: real
inicio
Escreval("Olá. Vou te informar o tipo de triangulo baseado no tamanho de seus lados")
Escreval("Diga as dimensões e te direi se ele é isósceles, equilátero ou escaleno.")
Escreva("Informe o tamanho do lado A. ")
leia(a)
Escreva("Informe o tamanho do lado B. ")
leia(b)
Escreva("Informe o tamanho do lado C. ")
leia(c)
Se(a+b>c) e (a+c>b) e (b+c>a) então
   Se (a<>b) e (a<>c) e (b<>c) então
      Escreva("O seu triangulo é escaleno.")
   SENAO
      Escreva("O seu triangulo é isósceles.")
      Se (a=b) e (a=c) então
         Escreva("O seu triangulo é equilatero.")
      FimSe
   FimSe
SENAO
      Escreva("Essas medidas nao formam um triangulo.")
FimSe
fimalgoritmo

(sei que na mensagem mostrada ao usuario diz "ou um ou outro ou outro", contudo, não acredito que um detalhamento aí seja necessário)

--

 

1 hora atrás, Simon Viegas disse:

4#
Fica ai o desafio de inserir as outras classificações... veja se é viável ou não.

 

Vou tentar aprimorá-lo com as seguintes funções:

1-inserir a classificação referente aos ângulos.

2-dizer qual a medida do ângulo em graus e radianos

 

Quando estiver pronto, eu posto

 

Valeu!

 

#edit correção pequena na indentação.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×