Ir para conteúdo

POWERED BY:

Arquivado

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

LordGargamel

Dúvida - Algoritmo Visual G

Recommended Posts

Tem esse algoritmo aqui, que eu preciso fazer usando repita:

A equipe de natação da Longelândia que participará das Olimpíadas do Rio 2016 conta com diversos atletas, distribuídos em 6 categorias, conforme a tabela abaixo. Faça um algoritmo em pseudocódigo que leia a idade de cada um destes membros e informe em qual categoria ele está classificado. Ao final seu programa deverá informar também qual o percentual de atletas que estão na categoria INFANTIL A. A entrada de dados encerrará quando for digitada uma idade negativa.

mirim-ate 4 anos

infantil a- entre 5 e 7 anos

infantil b- entre 8 e 10 anos

juvenil a- entre 11 e 13 anos

juvenil b- entre 14 e 17 anos

adulto- de 18 anos em diante

Tentei fazer incluindo o enquanto, pra não considerar qualquer número negativo, mas deu loop infinito por algum motivo que eu não tenho noção. Por causa disso, eu fiz uma mini gambiarra que vocês vão entender no último escreval do algoritmo, e mesmo assim não ta dando certo, aparece "invalid floating point operation". Segue o código:

algoritmo "ex04"
// Função :
// Autor :
// Data : 07/09/2016
// Seção de Declarações 
var
conttotal,continfa,idade:inteiro
inicio
conttotal<-0
continfa<-0
repita
escreval("Digite a idade de um membro: ")
leia(idade)
se idade<=4 entao
escreval("Esse membro está classificado na categoria MIRIM.")
conttotal<-conttotal+1
fimse
se (idade>=5) e (idade<=7) entao
escreval("Esse membro está classificado na categoria INFANTIL A.")
conttotal<-conttotal+1
continfa<-continfa+1
fimse
se (idade>=8) e (idade<=10) entao
escreval("Esse membro está classificado na categoria INFANTIL B.")
conttotal<-conttotal+1
fimse
se (idade>=11) e (idade<=13) entao
escreval("Esse membro está classificado na categoria JUVENIL A.")
conttotal<-conttotal+1
fimse
se (idade>=14) e (idade<=17) entao
escreval("Esse membro está classificado na categoria JUVENIL B.")
conttotal<-conttotal+1
fimse
se idade>=18 entao
escreval("Esse membro está classificado na categoria ADULTO.")
conttotal<-conttotal+1
fimse
ate idade<0
escreval("O percentual de atletas que estão na categoria INFANTIL A, correspondem à ",(continfa/contotal-1)*100,"%.")
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra quem não entendeu a fuleiragem que eu fiz, foi tentar subtrair -1, pra desconsiderar a ultima entrada de dados do contador normal, pois ele para após digitar número negativo. O esperado era somente aparecer a categoria na tela, mas não iria influenciar no percentual final dos atletas do infantil a.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou a subtração para desconsiderar a última contagem, que é quando o usuário digita um número negativo, pois, não existem pessoas com idades negativas, certo?

A expressão "(continfa/contotal-1)*100" teria como finalidade retirar 1 do contador total, mas esta está errada, por isso estás a obter valores incorretos.

Você já deve ter uma noção de prioridade dos operadores aritméticos, pois, usou parênteses para separar a divisão da multiplicação. As prioridades são as seguintes:

23G0aM6.pngTabela retirada do livro de Bruno Tonet.

Como vê na tabela, o algoritmo irá calcular primeiro a divisão "continfa/contotal" e depois sim, subtrair 1.
Para resolver isso deves usar mais parênteses onde queres fazer subtração (
contotal-1).

A expressão correta seria esta: (continfa / (contotal-1)) * 100.

Ps: não entendi se este era realmente seu problema, mas vi que estava errado e tentei ensinar a prioridade dos operadores aritméticos. Caso seja outro o problema, nos informe.

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.