Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jessica alves123

Alguem me ajuda com um exercicio de algoritmo

Recommended Posts

Não estou conseguindo terminar esse exercício no VISUALG:
Escreva um pseudocódigo que leia um número indeterminado de segmentos de reta de um polígono convexo. Cada segmento de reta lido estará determinado por dois pontos (ponto de início e ponto de fim), onde cada ponto estará determinado por dois números inteiros positivos (coordenada X e Y, respectivamente). O pseudocódigo deve calcular e imprimir:
a) o perímetro do polígono;
b) a média do comprimento dos segmentos de reta;
c) qual é o segmento de reta com maior comprimento;
d) se o polígono for um quadrado, calcular e imprimir sua área;
e) se o polígono for um triângulo, imprimir se é equilátero ou isósceles.
Quando for lido um número negativo, quer dizer que não existem mais dados a serem lidos.

Só consegui a letra "a" e a letra "b"
A letra "c" e "d" acusam erro no "então"
Já na letra "e", eu teria que fazer por "caso"?

E para numero negativo ele n esta lendo :/

Segue abaixo o q eu ja fiz.

Algoritmo "semnome"
Var
S,lado:inteiro
resp:caractere
media:real
maiorlado,quadrado:inteiro
Inicio
S<-0
repita
escreval("Digite um lado do polígno: ")
leia(lado)
S<-S+lado
escreval("Existem mais lados? S/N")
leia(resp)
ate(resp="N")
se(lado>maior)entao
maior<-lado
fimse
se(lado=4)entao
quadrado<-lado^2
fimse
media<-S/lado
escreval("O perimetro desse polígino é: ",S)
escreval("A media do comprimento da reta é: ",media)
escreval("maior com primento de reta é: ",maiorlado)
escreval("Área do quadrado é: ",quadrado)
Fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, antes de te ensinar, eu gostaria de te recomendar um curso de Portugol gratuito, bom e com certificado. Este é o "Curso em Vídeo".


O curso a qual me refiro é na plataforma do YouTube, lecionado pelo professor Gustavo Guanabara. O método que ele usa é para jovens e utiliza-se ferramentas para testar os códigos (Visualg e Scratch). Garanto que você não irá se decepcionar, até porque é GRÁTIS e interativo.



Para acessar as aulas,

. (Se você acessar e gostar, me avisa! Tenho maior orgulho desse professor.)





O que está acontecendo de errado, são algumas falhas no começo, que influenciarão no fim do código.


Analisando o cálculo de perímetro, temos que você está calculando cada lado do polígono, sem usar o segmento de retas. Caso você esteja com dúvida ou não saiba o que é, veja o exemplo:


O segmento XY (lado) representa uma reta completa, onde X é o valor inicial da reta e Y é o final. Se quiséssemos calcular o tamanho desta reta, subtrairíamos o valor final pelo inicial, logo: TamanhoReta = Y - X.


X = 5 Y= 10

|--------------------------------------|


Seguindo exemplo, teríamos: TamanhoReta = 10 - 5. Ou seja, o tamanho da reta seria 5.


|--------------------------------------|

TamanhoReta = 5


Caso o valor final seja menor que o inicial, notamos que o tamanho da reta seria negativo e valores negativos não existem neste código. Para concertarmos isso, usaríamos a função "Abs", a qual retorna o valor absoluto de um número negativo. Por exemplo: o valor absoluto de |-14| é 14.


X = 10 Y = 5


|--------------------------------------|

TamanhoReta = 5 - 10 = -5



Como usar a função "Abs":




X = 10 Y = 5


|--------------------------------------|

TamanhoReta = Abs(Y - X)




Vemos que o tamanho da reta é igual ao valor absoluto, entre subtração de Y por X.

Em termos mais claros, "Abs" Sempre retorna o valor positivo de um número. Nunca um negativo!


Agora, que sabes como calcular o tamanho de uma reta segmentada (lado) entre XY, faça que o computador leia o valor de X e depois de Y, para calcular o tamanho da segmentação e depois somar todas.


NOTA: CADA TAMANHO DE RETA É IGUAL A UM LADO DO POLÍGONO.


Outro erro que está acontecendo, é que você estava somente somando o valor das retas, para obter o perímetro. Não tinhas programado algo para contar quantos lados este polígono tinha, que é uma ação necessária para saberes se é um quadrado, futuramente. O código para isso, é semelhante ao de soma de lados, que você usa.


Para calcular a média dos lados, você está usando "media <- S / lado". Este cálculo está quase certo, porém, você está dividindo a soma de lados, pelo o último valor da variável "lado", lido. Deves consertar este código, de modo que a soma de lados seja dividida pela quantidade de lados.


O código para saber qual o maior lado, deve ser colocado dentro da estrutura de repetição "Repita" e, antes da pergunta "Existem mais lados?...", fazendo que toda vez que seja calculado um lado segmentado, o programa confira se ele é maior que o anterior.


O código "Se (Lado = 4) entao...", não daria certo porque apesar de um polígono possuir quatro lados, não significa que é um quadrado. Um quadrado possui quatro lados e TODOS IGUAIS. Então, voltaríamos na estrutura de repetição "Repita", e faríamos algo para saber se cada lado calculado é igual ao anterior.

Depois de fazer isso, usaríamos as condições "Se (QntLados = 4) e (LadosIguais = 4) entao...".


Quanto aos triângulos, você usaria uma estrutura condicional "Se", dentro de outra. Por exemplo:


Se


Senao

Se


FimSe

FimSe


Para saber se um triângulo é equilátero, devemos saber que este tipo de triângulo tem todos lados iguais, logo, faríamos algo parecido com o código do quadrado: "Se (QntLados = 3) e (LadosIguais = 3) entao...". No caso de um isósceles, sabemos que ele possui três lados (todo triângulo tem, dãh! kkk) e somente dois são iguais.


Poderíamos fazer isto com a estrutura "Caso", como você questionou, porém, espero que você estude mais um pouco sobre estas estruturas, para passar para o "Caso".


Como reparei que você mandou este tópico as cinco da manhã, eu suponho que você podia estar cansada, o que não é recomendado, quando se programa. Mesmo que tenha tido uma boa noite de sono, quando tiver trancada a uma parte de um código e com cansaço mental, sempre pare e vá fazer algo divertido e relaxante. Nunca continue forçando!




Vá postando suas dúvidas, referente a este tópico, até que você compreenda totalmente!!!


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.