Ir ao conteúdo
  • Cadastre-se

VisualG Verificações em polígonos convexos


Posts recomendados

Boa tarde pessoal, estou no 1° período de Sistema da informação e estou com dificuldades de fazer um exercicio, quem puder me ajudar agradeço.

 

5) Escreva um programa que: 

Leia o número de lados de um polígono convexo (Verifique se o número de lados é maior ou igual a 3)

 Se o número de lados for válido:

 Calcule o número de diagonais desse polígono

 Escreva o número de lados e o número de diagonais

 Se o número de lados não for válido escreva uma frase indicativa deste fato. 

Eu não estou entendendo como fazê-lo, se alguém puder me dar uma ajudinha agradeço

 

adicionado 7 minutos depois

Eu iniciei o algoritmo mais eu estou com duvida neste tópico :

Leia o número de lados de um polígono convexo (Verifique se o número de lados é maior ou igual a 3)

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Kazoii.

 

Por favor, poste o código que já conseguiu fazer.

 

No aguardo.

adicionado 1 minuto depois

 

Adendo:

16 minutos atrás, Kazoii disse:

Leia o número de lados de um polígono convexo (Verifique se o número de lados é maior ou igual a 3)

 

O número de lados informados pelo usuário tem que ser maior ou igual a 3, ou seja, se for menor que 3, tem que ler o número novamente... mas sugiro que ignore isso por enquanto... apenas suponha que sempre vai digitar um número válido... (de 3 pra cima)

Link para o comentário
Compartilhar em outros sites

Var
   // Seção de Declarações das variáveis
   numeroLados:inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreva("Digite o numero de lados do poligono: ")
   leia (numeroLados)
   se (numeroLados >= 3) então
      escreva ("Numero de lados validos")
   senao
      escreva ("Numero de lados invalidos")
fimalgoritmo
fimse

fimalgoritmo
 

Eu fiz ele ate aqui

 

Ai ele pede pra calcular a diagonal do polígono, as diagonais não precisam de valores?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Kazoii.

 

2 horas atrás, Kazoii disse:

Ai ele pede pra calcular a diagonal do polígono, as diagonais não precisam de valores?

 

Você que tem que nos dizer... :)

 

O que é uma "diagonal do polígono"? Você precisa entender do que se trata e qual a relação com o tal polígono convexo".

 

 

 

Mas vamos lá...

 

Em relação a busca de uma solução para qualquer problema, sempre tento dizer: entenda o problema primeiro. Simples assim!

 

Veja, não tem como resolver uma problema que não sabemos do que se trata. Lendo assim parece óbvio, mas é comum focarmos na solução ou, mais frequentemente, no resultado... "queremos fazer rodar", em detrimento de focar no problema em si.

 

Em relação ao seu contexto...

3 horas atrás, Kazoii disse:

Leia o número de lados de um polígono convexo (Verifique se o número de lados é maior ou igual a 3)

 Se o número de lados for válido:

 Calcule o número de diagonais desse polígono

 Escreva o número de lados e o número de diagonais

 Se o número de lados não for válido escreva uma frase indicativa deste fato. 

Eu não estou entendendo como fazê-lo, se alguém puder me dar uma ajudinha agradeço

 

O que é um "polígono"?

O que é "convexo"?

O que é um "polígono convexo"???

 

Se eu não sei o que é isso, como vou responder perguntas referente a ele? entende?

 

Caso ainda não esteja familiarizado com o tal "Polígono Convexo", dê uma pesquisada rápida para revisar. Não faz sentido (pelo menos para mim) tentar achar algo que não se sabe o quê é...

 

 

 

Então, aí teve a dúvida inicial:

 

3 horas atrás, Kazoii disse:

Eu iniciei o algoritmo mais eu estou com duvida neste tópico :

Leia o número de lados de um polígono convexo (Verifique se o número de lados é maior ou igual a 3)

 

Todo polígono tem pelo menos 3 lados, ou seja, não existe polígono de 2 ou de 1 lado apenas... muito menos com 0 lados ou com lados negativos... o polígono com menor quantidade de lados é o triângulo (3)... depois o quadrilátero (4), depois o pentágono (5)... etc... Acho que essa parte você já entendeu...

 

O que "Verifique se o número de lados é maior ou igual a 3" quer dizer é que você só efetuará as outros verificações se essa for satisfeita antes... mas como disse na minha postagem anterior:

3 horas atrás, Simon Viegas disse:

O número de lados informados pelo usuário tem que ser maior ou igual a 3, ou seja, se for menor que 3, tem que ler o número novamente... mas sugiro que ignore isso por enquanto... apenas suponha que sempre vai digitar um número válido... (de 3 pra cima)

Pule essa parte... faça o programa "beta" em que você SEMPRE irá digitar valores iguais ou maior a 3. Confie em mim...

 

 

Pronto, depois dessa introdução chata, vamos ao que interessa:

 

1) Sobre: Se o número de lados for válido:

Ignore! Sempre inseria número maiores ou iguais a 3. Depois faz esse pequeno ajuste. Obs.: se eu informar 4.7 lados, 4.7 é maior que 3, seria válido?   ou seja, essa etapa sedria apenas uma "proteção"... garantir que insira uma quantidade de lados válidas. Usando, por enquanto, números válidos, não precisará se preocupar com isso.

 

2) Sobre: Calcule o número de diagonais desse polígono

Aqui sim é uma parte mais interessante... Pesquise sobre "diagonais de um poligono". Entendendo do que se trata, entenderá como se calcula.

 

3) Sobre: Escreva o número de lados e o número de diagonais

A frase fala por si só.. apenas vai escreve o número de lados (que você digitou) e o número da diagonais que tem um polígono que tem essa quantidade de lados que foi digita, ou seja, que foi calculado no item 2.

 

4) Sobre: Se o número de lados não for válido escreva uma frase indicativa deste fato. 

Ignore! Perceba que nessa proposta, você sempre vai digitar o número de lados válidos (maior ou igual a 3).

 

 

Pronto! Tenta ai fazer o 2 e o 3... o 1 e o 4 fazemos depois. É igual o Vicetória da Bahia: mamão com açúcar.

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Citação:

Spoiler
16 horas atrás, Simon Viegas disse:

Olá @Kazoii.

 

 

Você que tem que nos dizer... :)

 

O que é uma "diagonal do polígono"? Você precisa entender do que se trata e qual a relação com o tal polígono convexo".

 

 

 

Mas vamos lá...

 

Em relação a busca de uma solução para qualquer problema, sempre tento dizer: entenda o problema primeiro. Simples assim!

 

Veja, não tem como resolver uma problema que não sabemos do que se trata. Lendo assim parece óbvio, mas é comum focarmos na solução ou, mais frequentemente, no resultado... "queremos fazer rodar", em detrimento de focar no problema em si.

 

Em relação ao seu contexto...

 

O que é um "polígono"?

O que é "convexo"?

O que é um "polígono convexo"???

 

Se eu não sei o que é isso, como vou responder perguntas referente a ele? entende?

 

Caso ainda não esteja familiarizado com o tal "Polígono Convexo", dê uma pesquisada rápida para revisar. Não faz sentido (pelo menos para mim) tentar achar algo que não se sabe o quê é...

 

 

 

Então, aí teve a dúvida inicial:

 

 

Todo polígono tem pelo menos 3 lados, ou seja, não existe polígono de 2 ou de 1 lado apenas... muito menos com 0 lados ou com lados negativos... o polígono com menor quantidade de lados é o triângulo (3)... depois o quadrilátero (4), depois o pentágono (5)... etc... Acho que essa parte você já entendeu...

 

O que "Verifique se o número de lados é maior ou igual a 3" quer dizer é que você só efetuará as outros verificações se essa for satisfeita antes... mas como disse na minha postagem anterior:

Pule essa parte... faça o programa "beta" em que você SEMPRE irá digitar valores iguais ou maior a 3. Confie em mim...

 

 

Pronto, depois dessa introdução chata, vamos ao que interessa:

 

1) Sobre: Se o número de lados for válido:

Ignore! Sempre inseria número maiores ou iguais a 3. Depois faz esse pequeno ajuste. Obs.: se eu informar 4.7 lados, 4.7 é maior que 3, seria válido?   ou seja, essa etapa sedria apenas uma "proteção"... garantir que insira uma quantidade de lados válidas. Usando, por enquanto, números válidos, não precisará se preocupar com isso.

 

2) Sobre: Calcule o número de diagonais desse polígono

Aqui sim é uma parte mais interessante... Pesquise sobre "diagonais de um poligono". Entendendo do que se trata, entenderá como se calcula.

 

3) Sobre: Escreva o número de lados e o número de diagonais

A frase fala por si só.. apenas vai escreve o número de lados (que você digitou) e o número da diagonais que tem um polígono que tem essa quantidade de lados que foi digita, ou seja, que foi calculado no item 2.

 

4) Sobre: Se o número de lados não for válido escreva uma frase indicativa deste fato. 

Ignore! Perceba que nessa proposta, você sempre vai digitar o número de lados válidos (maior ou igual a 3).

 

 

Pronto! Tenta ai fazer o 2 e o 3... o 1 e o 4 fazemos depois. É igual o Vicetória da Bahia: mamão com açúcar.

 

 

No aguardo.

 

Eu conseguir fazer ele aqui, dei uma pesquisada, e custei a encontrar mais achei. Vou deixar o programa aqui caso alguém tenha duvidas. Ele esta em procedimento porque o meu programa tem um menu, mais para um programa dedicado e a mesma coisa.

procedimento poligono
var
   fim:inteiro
   numeroLados, Ndiagonais:real
inicio
   limpatela
   fim <- 1
   enquanto (fim <> 0) faca
      escreva("Digite o numero de lados do poligono: ")
      leia (numeroLados)
      se (numeroLados >= 3) então
         escreva ("Numero de lados validos")
      senao
         escreva ("Numero de lados invalidos")
fimalgoritmo
fimse
Ndiagonais <- numeroLados-3
Ndiagonais <- (NumeroLados*ndiagonais)
Ndiagonais <- Ndiagonais/2
limpatela
escreval ("O numero de lados e igual a: ",numeroLados)
escreval ("O numero de diagonais e igual a: ",Ndiagonais)
escreval ("Digite 0 para terminar ou 1 para continuar")
leia (fim)
limpatela
fimenquanto
fimprocedimento

 

adicionado 10 minutos depois

Aqui está mais arrumado e sem o menu, aqui e para um programa individual.


//procedimento poligono
var
   fim:inteiro
   numeroLados, Ndiagonais:real
inicio 
     escreva("Digite o numero de lados do poligono: ")
      leia (numeroLados)
      se (numeroLados >= 3) então
         escreva ("Numero de lados validos")
      senao
         escreva ("Numero de lados invalidos")
fimse
Ndiagonais <- numeroLados - 3
Ndiagonais <- (NumeroLados * ndiagonais)
Ndiagonais <- Ndiagonais / 2
limpatela
escreval ("O numero de lados e igual a: ",numeroLados)
escreval ("O numero de diagonais e igual a: ",Ndiagonais)
fimalgaritmo


 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

@Kazoii, faltou implementar o item 1. E o item 4 ficou falho, por quê ele não pede para informa se o "Numero de lados é valido", mas apenas se "não é válido".

 

 

 

Como comentei, são duas etapas distintas:

17 horas atrás, Simon Viegas disse:

Pronto! Tenta ai fazer o 2 e o 3... o 1 e o 4 fazemos depois. É igual o Vicetória da Bahia: mamão com açúcar.

 

Uma, as partes 1 e 4, são referentes a estrutura de seleção (se), a outra, as partes 2 e 3 são referentes aos cálculos...

 

 

Particularmente entendo que devem ser separadas... mas no caso você tentou, apesar da minha sugestão, fazer tudo ao mesmo tempo...

 

Ou seja, ou tenta fazer uma coisa, ou tenta fazer outra... os dois ao mesmo tempo tende a complicar... Por sinal, teoricamente os itens 1 e 4 poderiam ser vistos antes.. faz tanto faz..

 

 

 

Vamos lá:

Em relação a parte dos "cálculos", temos:

 

17 horas atrás, Simon Viegas disse:

2) Sobre: Calcule o número de diagonais desse polígono

 

Pelos testes que eu fiz, se utilizar números válidos (maior ou iguais a 3), o resultado bate com o esperado.... mas vamos tentar analisar os cálculos:

 

11 horas atrás, Kazoii disse:

   Ndiagonais <- numeroLados - 3
   Ndiagonais <- (NumeroLados * ndiagonais)
   Ndiagonais <- Ndiagonais / 2

Apesar de teoricamente está funcionando, as etapas ficaram confusas... uma mesma variável fazendo papeis diferentes na conta...

 

Minha sugestão seria tentar seguir a fórmula original, ao mesmo tempo que tentaria efetuar as contas de uma vez, ex.:

   NDiagonais <- (numeroLados*(numeroLados-3))/2

Fica mais simples, não?

 

 

Uma base até o momento seria assim:

algoritmo "Poligonos Convexos"
var
   numeroLados :inteiro
   Ndiagonais  :real
inicio
   escreva("Digite o numero de lados do poligono: ")
   leia(numeroLados)
   NDiagonais <- (numeroLados*(numeroLados-3))/2
   limpatela
   escreval ("O numero de lados e igual a    : ",numeroLados)
   escreval ("O numero de diagonais e igual a: ",Ndiagonais)
fimalgoritmo

Pronto, ai fez o item 2 e item 3.

 

 

 

Em relação a estrutura de seleção

Aqui entra a parte dos item 1 e 4. Essa parte precisaria de uma análise por si só, entende? apesar que depois que ver que é algo simples, ela tem influência nos outros itens... e fazer tudo ao mesmo tempo acaba complicando..

 

Seria algo assim:

O item 1 é uma estrutura de seleção (se), e os itens 2 e 3 estão dentro dele... e o 4 seria o "senão" do 1. Algo assim:

algoritmo "Poligonos Convexos"
var
   numeroLados :inteiro
   Ndiagonais  :real
inicio
   escreva("Digite o numero de lados do poligono: ")
   leia(numeroLados)
   limpatela
   se (numeroLados>=3) ENTÃO //Se o número de lados for válido:
      NDiagonais <- (numeroLados*(numeroLados-3))/2 //Calcule o número de diagonais desse polígono
      escreval ("O numero de lados e igual a    : ",numeroLados)
      escreval ("O numero de diagonais e igual a: ",Ndiagonais) //Escreva o número de lados e o número de diagonais
   senao
      escreva ("Numero de lados invalidos") //Se o número de lados não for válido escreva uma frase indicativa deste fato.
   fimse
fimalgoritmo

 

ADENDO:

Se levássemos em consideração que o número de diagonais também é do tipo natural (não tem parte fracionada, ou seja, não precisa ser do tipo real), poderia ficar algo assim:

algoritmo "Poligonos Convexos"
var
   numeroLados :inteiro //número de lados do polígono
   Ndiagonais  :inteiro //número de diagonais do polígono
inicio
   escreva("Digite o numero de lados do poligono: ")
   leia(numeroLados)
   limpatela
   se (numeroLados>=3) ENTÃO //Se o número de lados for válido:
      NDiagonais <- int((numeroLados*(numeroLados-3))/2) //Calcule o número de diagonais desse polígono
      escreval ("O numero de lados e igual a    : ",numeroLados)
      escreval ("O numero de diagonais e igual a: ",Ndiagonais) //Escreva o número de lados e o número de diagonais
   senao
      escreva ("Numero de lados invalidos")      //Se o número de lados não for válido escreva uma frase indicativa deste fato.
   fimse
fimalgoritmo

 

Qualquer dúvida é só postar.

 

No aguardo.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...