Ir ao conteúdo
  • Cadastre-se

calculo do imc em pascal


Posts recomendados

To fazendo um exercício do curso de T.I que consistem em calcular o IMC De um determinado numero de pessoas e que no final ele me diga o valor do menor e maior IMC desse grupo de pessoas.

Program imc_doProf ;
var

   peso, alt, imc : real;
   cont           : string;
         
Begin
      
            textcolor(white);
      
      writeln('');
      writeln('=======================================');
      writeln('            CALCULO DE IMC             ');
      writeln('=======================================');
      writeln('');

   repeat
      
      peso := 0;
      alt  := 0;
      cont := 'Y';      
           
      write('INFORME SUA ALTURA: ');
      readln(alt);
      
      write('INFORME SEU PESO: ');
      readln(peso);
      
      imc := peso / sqr(alt);
      
      writeln('SEU IMC E: ', imc:05:02);
      
      write('DESEJA CALCULAR NOVAMENTE? (Y/N): ');
      read(cont);
      
    until(upcase(cont) = 'N');
    
End.

Esse foi o código que criei, só não estou conseguindo mostrar o valor do maior e menor IMC. Alguém pode me ajudar a desenvolver isso?

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

  • 2 meses depois...

@zro     esse algoritmo será mais fácil de fazer usando vetor que em pascal é o

array .  então acrescentei mais algumas linhas  para ver qual o maior e menor imc  :

Program imc_doProf ;
Uses crt;
var
  peso,alt,imc,a : real;
  contador,i,k,m : integer;
  cont,b         : string;
  vetor  : array[1..10,1..3] of real;
  nomes  : array[1..10]      of string;
Begin
  clrscr();
  textcolor(white);
  writeln('');
  writeln('=======================================');
  writeln('            CALCULO DE IMC             ');
  writeln('=======================================');
  writeln('');
  cont:='Y';
  contador:=0;
  peso:=0;
  alt:=0;
  m:=3;

   repeat
      contador:=contador+1;

      write('informe o nome: ');
      readln(nomes[contador]);

      write('INFORME SUA ALTURA ( casas decimais com ponto ): ');
      readln(vetor[contador,1]);

      write('INFORME SEU PESO: ');
      readln(vetor[contador,2]);

      imc := vetor[contador,2] / sqr(vetor[contador,1]);//peso-alt
      vetor[contador,3]:=imc;
      writeln('SEU IMC E: ', imc:05:02);

      write('DESEJA CALCULAR NOVAMENTE? (Y/N): ');
      readln(cont);
      if contador+1 > m then
      begin
        writeln('so podes cadastrar 10 pessoas ... tecle enter');
        readln(cont);
        cont:='n';
      end;
      writeln;
    until(upcase(cont) = 'N');

    for k:=1 to contador-1 do
    begin
      for i:=k+1 to contador do
      begin
        a:=vetor[i,3];
        if vetor[k,3] > vetor[i,3] then
        begin
          vetor   [i,3]:=vetor[k,3]; vetor[k,3]:=a;
          a:=vetor[i,2]; vetor[i,2]:=vetor[k,2];vetor[k,2]:=a;
          a:=vetor[i,1]; vetor[i,1]:=vetor[k,1];vetor[k,1]:=a;
          b:=nomes[i  ]; nomes[i  ]:=nomes[k  ];nomes[k  ]:=b;
        end;
      end;
    end;
    writeln;
    writeln('o menor imc é ',vetor[1,3]:05:02,' de ',nomes[1]);
    writeln('o maior imc é ',vetor[contador,3]:05:02,' de ',nomes[contador]);
    writeln('tecle enter');
    readln;
End.

 

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

  • Membro VIP

Olá a todos...

 

Me parece que a postagem é antiga, então tá valendo entregar "respostas prontas"... :)

 

Então, apesar de funcional, acho que esse código de @devair1010 tá um pouco avançado para o contexto, pois já entrou em "matrizes" (vetores de duas coordenadas) e métodos de ordenação (acho que Bubble Sort).

 

Dá para fazer apenas usando variáveis para armazenar o menor e maior valores, ex.:

Program imc_doProf;
uses
  CRT; //Biblioteca necessário para alguns compiladores para recenhecer alguns comandos (ex.: TextColor, ClrScr, UpCase, Yellow, White etc)
var
  peso, alt,
  IMC,
  maiorIMC,
  menorIMC  :real;
  cont      :string; 
BEGIN
TextColor(White);
writeln;
writeln('=======================================');
writeln('            CALCULO DE IMC             ');
writeln('=======================================');
writeln;
repeat
  {peso:=0;}   //não necessário
  {alt :=0;}   //não necessário
  {cont:='Y'}; //não necessário
  writeln;
  write  ('INFORME SUA ALTURA: '); readln(alt);
  write  ('INFORME SEU PESO: ');   readln(peso);
  IMC:=peso/Sqr(alt);
  writeln('SEU IMC E: ', IMC:0:2);
  if ((IMC<menorIMC) or (menorIMC=0)) then //se menor que o menor ou se é o primeiro
    menorIMC:=IMC;
  if (IMC>maiorIMC) then //se maior que o maior
    maiorIMC:=IMC;
  writeln;
  write  ('DESEJA CALCULAR NOVAMENTE? (S/N): '); //use "sim", vem vez de "yes"
  {read(cont);} //não usem read, use somente readln
  readln(cont);
until (UpCase(cont)='N');
writeln;
writeln('Menor IMC: ',menorIMC:0:2);
writeln('Maior IMC: ',maiorIMC:0:2);
readln; 
END.

 

 

Abaixo uma versão com alguns "enfeites".

Program imc_doProf;
uses
  CRT; //Biblioteca necessário para alguns compiladores para recenhecer alguns comandos (ex.: TextColor, ClrScr, UpCase, Yellow, White etc)
var
  peso, alt,
  IMC,
  maiorIMC,
  menorIMC  :real;
  cont      :string; 
BEGIN
TextColor(White+blink); //blink = fazer piscar.  obs.: em alguns compiladores não funciona (No meu, Free Pascal Compiler, fica apenas com um fundo cinza, rs)
writeln;
writeln('=======================================');
writeln('            CALCULO DE IMC             ');
writeln('=======================================');
writeln;
TextColor(Green);
writeln('                TABELA IMC                ');
writeln('Abaixo de 17       Muito abaixo do peso   ');
writeln('Entre 17 e 18,49   Abaixo do peso         ');
writeln('Entre 18,5 e 24,99 Peso normal            ');
writeln('Entre 25 e 29,99   Acima do peso          ');
writeln('Entre 30 e 34,99   Obesidade I            ');
writeln('Entre 35 e 39,99   Obesidade II (severa)  ');
writeln('Acima de 40        Obesidade III (mórbida)');
TextColor(White);
repeat
  writeln;
  write  ('INFORME SUA ALTURA: '); readln(alt);
  write  ('INFORME SEU PESO: ');   readln(peso);
  IMC:=peso/Sqr(alt);
  writeln('SEU IMC E: ', IMC:0:2);
  if ((IMC<menorIMC) or (menorIMC=0)) then //se menor que o menor ou o primeiro
    menorIMC:=IMC;
  if (IMC>maiorIMC) then //se maior que o maior
    maiorIMC:=IMC;
  writeln;
  TextColor(Yellow);
  write  ('DESEJA CALCULAR NOVAMENTE? (S/N): '); //use "sim", vem vez de "yes"
  TextColor(White);
  {read(cont);} //não use read, use somente readln
  readln(cont);
until (UpCase(cont)='N');
writeln;
writeln('Menor IMC: ',menorIMC:0:2);
writeln('Maior IMC: ',maiorIMC:0:2);
readln; 
END.

 

 

Abraços

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

Visitante
Este tópico está impedido de receber novas respostas.

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...