Ir para conteúdo

Arquivado

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

Aprendiz de programação

[Resolvido] Algoritmo visualg vetor,função

Recommended Posts

Pessoal,boa noite

 

Estou aqui a quebrar cabeça e não consigo passar desta fase, preciso usando função,procedimento e vetor no Visualg entrar com nome idade , peso e altura de 20 pessoas, calcular o IMC e depois dizer quem está acima do peso,normal , magro e abaixo do peso bem como mostrar o imc médio e quem está acima desta média.

 

O problema que não estou conseguindo fazer a função para calcular o IMC funcionar, já tentei de tods os jeitos e nada, passando desta fase irei tentar resolver o restante, porém trava na execução quando chamo a função no programa principal.

 

Vejam meu código.

algoritmo "imc de 20 pessoas usando subprograma"
var
pesos,imc,alturas:vetor[1..20]de real
nomes:vetor[1..20]de caracter
x:inteiro
procedimento lernomes
Var
i:inteiro
Inicio
Para i de 1 ate 20 faca
Escreva("Digite o nome da pessoa", i , ": ")
Leia(nomes[i])

fimpara

fimprocedimento

procedimento lerpesoealtura
Var
i:inteiro
Inicio
Para i de 1 ate 20 faca

Escreva("Digite o peso da pessoa", i , ": ")
Leia(pesos[i])
Escreva("Digite a altura da pessoa", i , ": ")
Leia(alturas[i])

fimpara

fimprocedimento

funcao calcularimc (im:real):real
para i de 1 ate 20 faca
lerpesos

fimpara
retorne (pesos[i]/(alturas[i]*alturas[i]))
fimfuncao
inicio

lernomes
lerpesoealtura
calcularimc(im)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, fiz aqui rapidinho, não pude testar pois estou sem o visualg, mas acredito que seja isso:

 

algoritmo "calc_imc"
// Função : Calculando IMC
// Autor : Rodrigo
// Data : 05/06/2010
// Seção de Declarações
var
nome:vetor[1..20] de caracter
idade,peso,altura,imc:vetor[1..20] de real
i:inteiro

inicio
// Seção de Comandos

para i de 1 ate 2 passo 1 faca
   escreva ("Digite o nome do Nº",i,": ")
   leia (nome[i])
   escreva ("Digite a idade do Nº",i,": ")
   leia (idade[i])
   escreva ("Digite o peso do Nº",i,": ")
   leia (peso[i])
   escreva ("Digite a altura do Nº",i,": ")
   leia (altura[i])
//##CALCULANDO IMC##//
   imc[i] <- peso[i]/(altura[i]*altura[i])
fimpara
//##PROCESSANDO E EXIBINDO RESULTADOS##//
para i de 1 ate 2 passo 1 faca
   se (imc[i] <= 20) entao
      escreval (nome[i]," com ",idade[i]," anos, está abaixo do peso, seu IMC é de ",imc[i])
   senao
      se (imc[i] > 20) e (imc[i] <= 26) entao
         escreval (nome[i]," com ",idade[i]," anos, está com peso normal, seu IMC é de ",imc[i])
      senao
         se (imc[i] > 26) e (imc[i] <= 30) entao
            escreval (nome[i]," com ",idade[i]," anos, está acima do peso, seu IMC é de ",imc[i])
         senao
            se (imc[i] > 30) entao
               escreval (nome[i]," com ",idade[i]," anos, está obeso, seu IMC é de ",imc[i])
            fimse
         fimse
      fimse
   fimse
fimpara
fimalgoritmo

OBS: Estou meio por fora de quanto precisa no IMC para está acima, abaixo do peso, qualquer coisa só alterar..

 

T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, fiz aqui rapidinho, não pude testar pois estou sem o visualg, mas acredito que seja isso:

 

algoritmo "calc_imc"
// Função : Calculando IMC
// Autor : Rodrigo
// Data : 05/06/2010
// Seção de Declarações
var
nome:vetor[1..20] de caracter
idade,peso,altura,imc:vetor[1..20] de real
i:inteiro

inicio
// Seção de Comandos

para i de 1 ate 2 passo 1 faca
   escreva ("Digite o nome do Nº",i,": ")
   leia (nome[i])
   escreva ("Digite a idade do Nº",i,": ")
   leia (idade[i])
   escreva ("Digite o peso do Nº",i,": ")
   leia (peso[i])
   escreva ("Digite a altura do Nº",i,": ")
   leia (altura[i])
//##CALCULANDO IMC##//
   imc[i] <- peso[i]/(altura[i]*altura[i])
fimpara
//##PROCESSANDO E EXIBINDO RESULTADOS##//
para i de 1 ate 2 passo 1 faca
   se (imc[i] <= 20) entao
      escreval (nome[i]," com ",idade[i]," anos, está abaixo do peso, seu IMC é de ",imc[i])
   senao
      se (imc[i] > 20) e (imc[i] <= 26) entao
         escreval (nome[i]," com ",idade[i]," anos, está com peso normal, seu IMC é de ",imc[i])
      senao
         se (imc[i] > 26) e (imc[i] <= 30) entao
            escreval (nome[i]," com ",idade[i]," anos, está acima do peso, seu IMC é de ",imc[i])
         senao
            se (imc[i] > 30) entao
               escreval (nome[i]," com ",idade[i]," anos, está obeso, seu IMC é de ",imc[i])
            fimse
         fimse
      fimse
   fimse
fimpara
fimalgoritmo

OBS: Estou meio por fora de quanto precisa no IMC para está acima, abaixo do peso, qualquer coisa só alterar..

 

T+

 

 

Rodrigo, obrigado, me ajudou pra caramba.

 

Senhores, favor marcar este tópico como ressolvido.

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.