Ir ao conteúdo
  • Cadastre-se
RafaelLittleo

Visualg como calcular imc?

Recommended Posts

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

   nome:vetor [1..100] de caractere
   m,n,t,x,y,op:inteiro
   alt: vetor [1..100] de real
   imc: vetor [1..5,1..5] de real
procedimento "cadastro"
var
   imc: real
   p:  real

inicio

   escreval ("               CADASTRO")
   escreval ("___________________________________")
   escreval ("digite o nome do paciente: ")
   leia (nome[t])
   escreval ("digite a altura do paciente: ")
   leia (alt[t])
   escreval ("digite o peso do paciente: ")
   leia (p)
   imc<- p/(alt[t]*alt[t])
   escreval ("IMC: ", imc)
   se (imc<17) então
      escreval (" MUITO ABAIXO DO PESO.")
   fimse
   se (imc>17) e (imc< 18.49) então
      escreval ("ABAIXO DO PESO")
   fimse
   se (imc>18.50) e (imc<24.99) então
      escreval ("PESO NORMAL")
   fimse
   se (imc>25) e (imc<29.99)então
      escreval ("ACIMA DO PESO")
   fimse
   se (imc>30) e (imc<34.99)então
      escreval ("OBESIDADE 1")
   fimse
   se (imc>35) e (imc<39.99)então
      escreval ("OBESIDADE 2 (SEVERA)")
   fimse
   se (imc>40)então
      escreval ("OBESIDADE 3 (MÓRBIDA)")
   fimse
   escreval
   t<-t + 1
fimprocedimento
procedimento "monitoramento"
var
   p: real


inicio
   escreval ("          MONITORAMENTO")

   para n de 1 ate t-1 faca
      escreval ("_____________________________________")
      escreval ("NOME:  ", nome[n])
      escreval ("ALTURA:  ", alt[n])

      escreval ("O peso atual do paciente é:  ")
      leia (p)
      escreval ("O imc atual é:  ")
      imc[n,m]<- p/(alt[n]*alt[n])
      escreval ("IMC: ", imc[n,m])
      se (imc[n,m]<17) então
         escreval (" MUITO ABAIXO DO PESO.")
      fimse
      se (imc[n,m]>17) e (imc[n,m]< 18.49) então
         escreval ("ABAIXO DO PESO")
      fimse
      se (imc[n,m]>18.50) e (imc[n,m]<24.99) então
         escreval ("PESO NORMAL")
      fimse
      se (imc[n,m]>25) e (imc[n,m]<29.99)então
         escreval ("ACIMA DO PESO")
      fimse
      se (imc[n,m]>30) e (imc[n,m]<34.99)então
         escreval ("OBESIDADE 1")
      fimse
      se (imc[n,m]>35) e (imc[n,m]<39.99)então
         escreval ("OBESIDADE 2 (SEVERA)")
      fimse
      se (imc[n,m]>40)então
         escreval ("OBESIDADE 3 (MÓRBIDA)")
      fimse


      n<-n+1
      m<-m+1
   fimpara

fimprocedimento
procedimento "relatorio"
var

inicio

   escreval ("      RELATÒRIO")
   escreval ("_________________________")
   escreval ("     TABELA DE MONITORAMENTO")

   para n de 1 ate t-1 faca
      para m de 1 ate t-1 faca
         escreva ("",imc[n,m]:5:2)
      fimpara
      escreval
   fimpara
   menu


fimprocedimento
procedimento "menu"
inicio
   escreval ("___________________________")
   escreval ("1.CADASTRO DO PACIENTE")
   escreval ("2.MONITORAMENTO DO PACIENTE")
   escreval ("3.RELATÒRIO")
   escreval ("4.SAIR")
   escreval("____________________________")
   leia (op)
   se (op=1) então
      cadastro
   fimse
   se (op=2) então
      monitoramento
   fimse
   se (op=3) então
      relatorio
   fimse
fimprocedimento
Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   m<-1
   t<-1
   n<-1

   enquanto (op<>4) faca
      menu

   fimenquanto

   se(op=4)  então
      escreval ("FIM")
   fimse



fimalgoritmo

Será que alguém pode me ajudar, este programa pede nome, e tem q voltar para o menu, depois é feito um monitoramento pra ver se ouve mudanças no paciente...e por fim o relatório, só que ela não funciona 100%, o relatório não mostra todos os imc's calculados, ele apaga alguns.... ALGUÉM ME AJUDA... ISSO JÁ ESTA ME DANDO NOS NERVOS

KKKK :atirador:

Editado por RafaelLittleo
O título do tópico DEVE ser mais objetivo
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafaelLittleo   no procedimento cadastro , o imc sendo uma matriz é preciso especificar as duas posições em que se deve guardar o valor.   e no procedimento relatorio você colocou imc[n,m] mas seria imc[x,y].

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, devair1010 disse:

@RafaelLittleo   no procedimento cadastro , o imc sendo uma matriz é preciso especificar as duas 
posições em que se deve guardar o valor.   e no procedimento relatorio você colocou
imc[n,m] mas seria imc[x,y].

na verdade é imc[n,m] porque foi mudado porque com x,y não rodava ai foi alterado kkkk esqueci de mandar esta parte alterada maus ai kkkk... vou mandar o corrigido

adicionado 2 minutos depois

pronto @devair1010 editei o primeiro quadro de conversas dê uma olhada lá kkkk

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafaelLittleo       esse vetor imc: vetor[1..5,1..5] de inteiro bidimensional não está dando certo não, melhor usar  vetor normal e coloque assim:

imc2: vetor [1..100] de real

pois  você já está usando a variável imc.      E mude esse vetor em todo o código onde   ele estiver como bidimensional.  

no cadastro coloque:

   imc:=p/(alt[t]*alt[t])//imc2[1,1]:=1
   imc2[t] <- p/(alt[t]*alt[t])

no monitoramento coloque:

imc2[n]<- p/(alt[n]*alt[n])

e em todos os SE também.

no relatório coloque:

   para y de 1 ate t-1 faca
      //escreval ("         ")
      escreval("PacienTe ",nome[y]," Com IMC = ",imc2[y]:5:2)
      g:=g+1
      se g > 30 então
        escreval("Tecle Enter Para ProsseguiR")
        leia(g)
        g:=0
        limpatela
      fimse
   fimpara

o restante do código está certo

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafaelLittleo    Aqui eu testei e está funcionando bem, está guardando todos os dados corretamente, pode ser que tenha ficado alguma variável para ser atualizada, vou mandar o seu código com as correções:

Algoritmo "imc4"
Var
   nome          : vetor [1..100] de caractere
   m,n,t,x,y,op,k: inteiro
   alt           : vetor [1..100] de real
   imc2          : vetor [1..100] de real
procedimento "cadastro"
var
   imc: real
   p  : real

inicio

   escreval ("               CADASTRO")
   escreval ("___________________________________")
   escreval ("digite o nome do paciente: ")
   leia (nome[t])
   escreval ("digite a altura do paciente: ")
   leia (alt[t])
   escreval ("digite o peso do paciente: ")
   leia (p)
   imc:=p/(alt[t]*alt[t])//imc2[1,1]:=1
   imc2[t] <- p/(alt[t]*alt[t])
   k:=k+1
   se  k > 100 então
     escreval("Só pode cadstrar 100 pacientes")
     interrompa
   fimse
   escreval ("IMC: ", imc)
   se (imc<17) então
      escreval (" MUITO ABAIXO DO PESO.")
   fimse
   se (imc>17) e (imc< 18.49) então
      escreval ("ABAIXO DO PESO")
   fimse
   se (imc>18.50) e (imc<24.99) então
      escreval ("PESO NORMAL")
   fimse
   se (imc>25) e (imc<29.99)então
      escreval ("ACIMA DO PESO")
   fimse
   se (imc>30) e (imc<34.99)então
      escreval ("OBESIDADE 1")
   fimse
   se (imc>35) e (imc<39.99)então
      escreval ("OBESIDADE 2 (SEVERA)")
   fimse
   se (imc>40)então
      escreval ("OBESIDADE 3 (MÓRBIDA)")
   fimse
   escreval()
   t<-t + 1
fimprocedimento
procedimento "monitoramento"
var
   p: real


inicio
   escreval ("          MONITORAMENTO")
   para n de 1 ate t-1 faca
     //para m de 1 ate w-1 faca
      escreval ("_____________________________________")
      escreval ("NOME:  ", nome[n])
      escreval ("ALTURA:  ", alt[n])
      escreval ("O peso atual do paciente é:  ")
      leia (p)
      escreval ("O imc atual é:  ")
      imc2[n]<- p/(alt[n]*alt[n])
      escreval ("IMC: ", imc2[n])
      se (imc2[n]<17) então
         escreval (" MUITO ABAIXO DO PESO.")
      fimse
      se (imc2[n]>17) e (imc2[n]< 18.49) então
         escreval ("ABAIXO DO PESO")
      fimse
      se (imc2[n]>18.50) e (imc2[n]<24.99) então
         escreval ("PESO NORMAL")
      fimse
      se (imc2[n]>25) e (imc2[n]<29.99)então
         escreval ("ACIMA DO PESO")
      fimse
      se (imc2[n]>30) e (imc2[n]<34.99)então
         escreval ("OBESIDADE 1")
      fimse
      se (imc2[n]>35) e (imc2[n]<39.99)então
         escreval ("OBESIDADE 2 (SEVERA)")
      fimse
      se (imc2[n]>40)então
         escreval ("OBESIDADE 3 (MÓRBIDA)")
      fimse
    //fimpara
  fimpara
fimprocedimento
procedimento "relatorio"
var
   linha, g,h: inteiro

inicio
   escreval ("      RELATÒRIO")
   escreval ("_________________________")
   escreval ("     TABELA DE MONITORAMENTO")
   para y de 1 ate t-1 faca
      escreval("PacienTe ",nome[y]," Com IMC = ",imc2[y]:5:2)
      se g > 30 então
        escreval("Tecle Enter Para ProsseguiR")
        leia(g)
        limpatela
      fimse
   fimpara
fimprocedimento
procedimento "menu"
inicio
   escreval ("___________________________")
   escreval ("1.CADASTRO DO PACIENTE")
   escreval ("2.MONITORAMENTO DO PACIENTE")
   escreval ("3.RELATÒRIO")
   escreval ("4.SAIR")
   escreval("____________________________")
   leia (op)
   se (op=1) então
      cadastro
   fimse
   se (op=2) então
      monitoramento
   fimse
   se (op=3) então
      relatorio
   fimse
fimprocedimento
Inicio
   m<-1
   t<-1
   n<-1
   k:=1
   enquanto (op<>4) faca
      menu
   fimenquanto
   se(op=4)  então
      escreval ("FIM")
   fimse
Fimalgoritmo

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafaelLittleo   testei varias vezes e não vi ele substituir o último valor não, então coloquei 
esse vetor para armazenar o peso:

peso          : vetor [1..100] de real

e no monitoramento no inicio depois de escreval ("ALTURA:  ", alt[n])  coloque isso:

escreval("Peso Anterior =  ",peso[n])

e depois de ler o peso coloque:

peso[n]:=p

e no cadastro depois de ler o peso coloque:

peso[t]:=p

pois o último valor dado no monitoramento é o peso e com esse vetor pode-se ver 
que o valor se mantém.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

não @devair1010 ele não substitui o ultimo, ele substitui os primeiros... não tem como mostrar todos os imc's calculados, sem apagar o anterior... Deu para entender kkk, porque explicar pelo computador via conversa é meio complicado kkkk

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafaelLittleo    mas é isso que estou dizendo,  aqui ele manteve todos os cadastros e pesos e alturas, tanto no relatório como no monitoramento. no caso ai não sei o que está acontecendo. Você já copiou e colou o código que enviei, para testar.

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

@RafaelLittleo, a primeira coisa que precisa ser analisado é "o que você precisa"... como deveria funcionar o "Monitoramento do Paciente"? Seriam várias IMCs para um mesmo paciente?

 

Então, outro ponto a ser analisado é se você precisa armazenar o IMC ou o Peso. Pelo que eu entendi, o correto seria armazenar a ALTURA e o PESO, pois o IMC é um "cálculo", que pode ser obtido através desses dois dados. Seguindo esse princípio, as variáveis poderiam ficar mais ou menos assim:

 

Var
   nomes     : vetor [1..100] de caractere
   alturas   : vetor [1..100] de real
   rel_pesos : vetor [1..100,1..5] de real //"Relação de Pesos". 5 pesos para cada paciente
   total     : inteiro //total de pacientes
   i,j       : inteiro //auxliares para percorrer os vetores

Obs.: veja que sugiro usar as nomenclaturas dos vetores no plural, pois são mais de um dado! (ex.: nome = uma variável, que armazena um nome. nomes = vetor que armazenas nomes)

 

Daí, o cadastro dos pesos é feito da mesma forma que do nome e altura, a diferença é que tem um "parâmetro a mais", que no caso se refere a "relação de pesos", ou seja, cada paciente pode cadastrar até 5 pesos.

 

Na hora do cadastro inicial (fora do relatório) você pode cadastrar apenas um peso, no caso, ficando na posição 1. Ex.:

   escreval ("digite o peso do paciente: ")
   leia (rel_pesos[total,1])  //cadastra o primeiro peso do paciente

 

Para ter acesso a um determinado peso, a mesma coisa: basta especificar "qual peso quer".

 

Se for o primeiro peso:

IMC <- rel_pesos[i,1]/(alturas[i]*alturas[i])

Sendo que i variaria de 1 até o total de cadastros.

 

 

Se forem todos os pesos

IMC <- rel_pesos[i,j]/(alturas[i]*alturas[i])

Sendo que i variaria de 1 até o total de cadastros e o j variaria  de 1 até o total de pesos.

 

Ou seja, na hora de cadastrar lá no monitoramento, o j iniciaria de 2 e iria até 5, pois o primeiro peso já foi cadastrado lá no "Cadastro".

 

OBSERVAÇÃO: Veja, essa sugestão se baseia que você irá cadastrar todos os pesos de uma vez só lá no monitoramento. Caso contrário, teria que imaginar alguma forma para controlar quantos pesos cada um dos pacientes já cadastram. (dá para fazer também, mas teria que ser projetado com mais calma)

 

***

 

Qualquer dúvida é só postar.

 

No aguardo.

  • Curtir 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

×