Jump to content
brunaborgesa

Ajuda com Algoritmo IMC

Recommended Posts

Ola gente, preciso fazer um programa usando o labwindows em C para calculo de IMC. O programa que fiz só mostra como resultado "Abaixo do peso" bem rápido e depois fecha o executável. Segue abaixo o programa, se alguem puder me dizer onde está o erro.

PRovavelmente é algum uso errado de getchar, nao sei.

#include <ansi_c.h>
int main ()
{
float peso, altura, a, imc;
printf ("este programa calcula o IMC \n");
printf ("Digite seu peso \n");
scanf ("%f", &peso);
getchar () ;
printf ("Digite sua altura \n");
scanf ("%f" , &altura);
getchar () ;
a=(altura*altura);
imc=(peso/a);
if (imc<=17)
{
printf("Muito abaixo do peso\n");
getchar ();
}
else if ((imc>17) && (imc<=18,49))
{
printf ("Abaixo do peso \n");
getchar ();
}
else if ((imc>18,49) && (imc<=24,99))
{
printf ("Peso normal \n");
getchar ();
}
else if ((imc>24,99) && (imc<=29,99))
{
printf ("Acima do peso \n");
getchar ();
}
else if ((imc>29,99) && (imc<=34,99))
{
printf ("Obesidade I \n");
getchar ();
}
else if ((imc>34,99) && (imc<=39,99))
{
printf ("Obesidade II (severa) \n");
getchar ();
}
else
{
printf ("Obesidade III (morbida) \n");
getchar ();
}
getchar ();
return 0;
}

Share this post


Link to post
Share on other sites

scanf ("%f%*c", &peso);

scanf ("%f%*c", &altura);

E tente colocar só um getchar() no final.

Share this post


Link to post
Share on other sites

Continua sem funcionar :( não importa qual valor eu coloque para altura ou peso, o resultado é sempre o mesmo "Abaixo do peso" e fecha direto o programa, mesmo usando apenas o getchar() do final.

Share this post


Link to post
Share on other sites

Olá!

Bem, acho que nem era preciso, mas dei uma compilada rapida aqui e me foram retornados os seguintes erros e alertas:

- Aqui no meu caso a biblioteca em questão parece não ser suportada.

|1| fatal error: ansi_c.h: Arquivo ou diretório não encontrado

- Ao que parece este alerta parece estar se referindo ao fato de que voce está usando uma virgula ( , ) como separador decimal, quando o correto seria ponto ( . )

|32|warning: left-hand operand of comma expression has no effect 

Acho que com as correções e dicas o codigo vai rodar . . .

Ubuntu 14.04 - GCC 4.8.4 CodeBlocks 13.12

Espero Ter Ajudado ! ! !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By AnotherSunset
      Boa noite/dia gente. Preciso de ajuda aqui. Tenho um exercício no qual tenho de fazer um programa em pascal com o seguinte enunciado:
      Considere a soma S dos termo da série infinita apresentada abaixo:

      Fazer um programa em Free Pascal que calcule o valor aproximado da soma S dos termos da série até o momento em que a diferença das normas (módulo) de 2 termos consecutivos for menor que 0,000001 ({i.e.}, norma da diferença das normas de dois termos consecutivos).
       
      Segue meu algoritmos/programa:
       
      program calcserie;
      var
         soma, a1, a2, an  : real;
         sinal                : longint;
         cont, n, fat         : integer;
      begin
         n := 0;
         a1 := 1;
         a2 := 0;
         soma := 0;
         cont := 1;
         fat := 1;
         an := 1;
         sinal := 1;
         while (an) > 0.000001 do
            begin
            n := n + 2;
              while cont <= n do
                  begin
                  fat := fat * cont;
                  cont := cont + 1;
              end;
           soma := (soma + (a1 * sinal));
           sinal := sinal * -1;
           a2 := a1;
           a1 := ((1/fat));
              if (a2 < 0) then
              an := (a2 * -1) - a1
              else if (a1 < 0) then
              an := (a2) - (a1 * -1);
              end;
         write (soma:0:15);
      end.
       
      Meu erro está sendo a partir da 3 casa decimal

    • By llucaahenri
      Bom dia!
      Sou iniciante nessa área de programação, estou aprendendo sobre vetores e matrizes e gostaria de saber como faço para calcular elementos de um vetor e de uma matriz, eu tentei fazer usando laço For, mas não consegui.
      Esse exercício que estou tentando fazer.  
      Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes a duas posições no vetor. Ao final seu programa deverá escrever a soma dos valores encontrados nas respectivas posições X e Y.
      Meu código!
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() {     setlocale(LC_ALL, "Portuguese");     int VetorX[12], VetorY[12];     int Result, X, Y, i, j;     for(i = 1; i < 13; i++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor X. \n", i);         scanf("%d", &X);     }     for(i = 1; j < 13; j++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor Y. \n", j);         scanf("%d", &Y);     }         for(i = 0; i < 13; i++){             Result =+ VetorX;             printf("O resultado é%d", Result);         }     return 0; }
       
    • By thisis_paulo
      Olá pessoal, sou iniciante tanto aqui no fórum tanto na linguagem c++.
      Estou tentando resolver o seguinte algoritmo:
       
      Calcule as médias das notas escolares de um aluno (media 1º bimestre, media 2º bimestre, media final) sendo que:
      As notas das provas parciais 1 e 2 equivalem a 30% da nota total do bimestre 1 e 2;
      As notas das provas oficiais 1 e 2 equivalem a 70% da nota total do bimestre 1 e 2;
      A nota total do bimestre 1 equivale a 40% da nota final do semestre;
      A nota total do bimestre 2 equivale a 60% da nota final do semestre;
       
      Utilize structs para armazenar a notas e medias e referencie cada elemento por ponteiros no main.
       
      Segue abaixo, a minha tentativa.
      Não estou conseguindo guardar as notas pedidas no main no vetor de notas dentro da struct, estou usando cin para fazer isso, uma solução mais adequada para realizar este procedimento?
       
      - Biblioteca
      typedef struct notas { float parcial[2], *p1, *p2; float oficial[2], *of1, *of2; float exame, *ex; } NotasProvas; void NotaBim1 (NotasProvas &notas, float *p1, float *of1); void NotaBim2 (NotasProvas &notas, float *p2, float *of2); void NotaExame (NotasProvas &notas, float *ex); typedef struct medias { float mediaB1, mediaB2, *m1, *m2; float notaFinal, *nf; float notaTotal, *nt; } MediasNotas; void MediaBim1 (MediasNotas &medias, float *m1); void MediaBim2 (MediasNotas &medias, float *m2); void MediaFinal (MediasNotas &medias, float *m1, float *m2); void MediaTotal (MediasNotas &medias, float *nf, float *ex);  
      - Procedimentos 
      #include "notas.h" void NotaBim1 (NotasProvas &notas, float *p1, *of1) { *p1 = &NotasProvas.parcial[1]; *of1= &NotasProvas.oficial[1]; MediasNotas.mediaB1 = (p1 * 0.3) + (of1 * 0.7); } void NotaBim2 (NotasProvas &notas, float *p2, *of2) { *p2 = &NotasProvas.parcial[2]; *of2 = &NotasProvas.oficial[2]; MediasNotas.mediaB2 = (p2 * 0.3) + (of2 * 0.7); } void MediaFinal (MediasNotas &medias, float *m1, *m2) { *m1 = &MediasNotas.mediaB1; *m2 = &MediasNotas.mediaB2; MediasNotas.notaFinal = (m1 * 0.4) + (m2 * 0.6); } void MediaTotal (MediasNotas &medias, float *nf, *ex) { *nf = &MediasNotas.notaFinal; *ex = &NotasProvas.exame; MediasNotas.notaTotal = (nf + ex) / 2; } - Função Main
      #include <iostream> #include "notas.h" using namespace std; int main() { cout << "\t\t CALCULANDO NOTAS " << endl; cout << endl; cout << "Qual a sua nota da Prova Parcial 01? " << endl; cin >> NotasProvas.p1; cout << "Qual a sua notas da Prova Oficial 01? " << endl; cin >> NotasProvas.of1; cout << "Nota do 1º bimestre: " << MediasNotas.m1 << endl; cout << "\t\t Segundo Bimestre" << endl; cout << endl; cout << "Qual a sua nota na Prova Parcial 02? " << endl; cin >> NotasProvas.p2; cout << "Qual a sua nota na Prova Oficial 02? " << endl; cin >> NotasProvas.of2; cout << "Nota do 2º bimestre: " << MediasNotas.m2 << endl; cout << "Media Final: " << MediasNotas.nf << endl; system("PAUSE"); return 0; } Desde já, agradeço pelas ajudas!
       
       
       
       
       
    • By Hendrius Félix
      Estou na tentativa de fazer um menu interativo, mas estou com um problema. So fiz a primeira parte do login, e da erro quando o usuario nao possui cadastro... pf me ajudem
       
      obs: Trabalho é para fazer um "app", na vdd so uma amostra pra depois ser programado corretamente...
       
       
       
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> main() {     setlocale(LC_ALL, "Portuguese");     int opcao, desej;     char cadast_, email[20], senha[16], email_[20], senha_[16];          printf("\tBem vindo ao Home Service!\n");     printf("\t\t1.Login\n");     printf("\t\t2.Opções\n");     printf("\t\t3.Contato\n");     printf("\t\t4.Ajuda\n");     printf("\t\t5.Sair\n");     printf("\t\tOpção\n");     scanf("%d", &opcao);     fflush(stdin);          switch(opcao){         case 1: printf("\tVocê já possui cadastro\?\n");                 scanf("%s",&cadast_);                 switch(cadast_){                 case 'sim':                 case 'Sim':                 case 's':                 case 'S': printf("\t\tEmail: ");                            scanf("%s", &email);                           printf("\t\tSenha: ");                            scanf(" %s", &senha);                           printf("\n\t\tBem Vindo de volta!");                           printf("\n\t\tMenu");                           printf("\n\t\tServiços");                           printf("\n\t\tContato");                           printf("\n\t\tBuscar");                                                                 break;                 case 'nao':                 case 'n':                 case 'N':                 case 'Não':                 case 'não':                 case 'Nao': printf("\tDeseja se Cadastrar\?\n") ;                             scanf("%d", &desej);                             switch(desej)                             {                                 case 'sim':                                 case 'Sim':                                 case 's':                                 case 'S': printf("\t\tInsira seu Email: ");                                            scanf("%s", &email_);                                           printf("\t\tInsira sua Senha: ");                                            scanf(" %s", &senha_);                                           printf("Bem Vindo!");                                           printf("\t\t1.Menu");                                           printf("\t\t2.Serviços");                                           printf("\t\t3.Contato");                                           printf("\t\t4.Buscar"); break;                                case 'nao':                                case 'n':                                case 'N':                                case 'não':                                case 'Nao': printf("Ok, até mais...");break;                             }                 default: puts("Opção Invalida, tente novamente!");break;                 }         case 2: puts("");break;         case 3: puts("");break;         case 4: puts("");break;         case 5: puts("");break;         default: puts("Opção invalida, tente novamente!");break;     }      }  
    • By Vincent da Silva
      Olá, eu quero criar um programinha para gerenciar campeonatos de um jogo que faço com meus amigos. Primeiro eu quero cadastrar as equipes, cada equipe tem sempre cinco jogadores e eu vou fazer um simples cadastro com o nome da equipe e os cinco jogadores. Depois eu quero criar um sistema que vai ser o principal para colocar as partidas. Quando eu for cadastrar o jogo (partida) eu vou selecionar duas equipes entre as que estão cadastradas e automaticamente o programa já vai colocar os jogadores, depois eu vou colocar os pontos, em cada ponto colocar a equipe e o jogador que marcou, aí o programa já soma o placar e depois que eu concluir os jogos vai gerar dois relatórios, um vai ser o ranking das equipes com vitórias e derrotas e o outro vai ser um ranking dos jogadores mostrando quantos pontos cada um marcou.
       
      O meu objetivo é que eu possa instalar esse programa no meu pc e se for preciso instalar em outro pc e ele armazene as equipes, os jogos, o ranking de equipes e jogadores e se possível eu até possa colocar uma pequena imagem com o símbolo de cada equipe para ilustrar o rankig igual nesses sites de esportes, mas eu não vou publicar na internet, apenas no PC e o mais importante é que eu possa fazer backup desses dados para eles não se perderem. Qual programa ou linguagem vocês recomendam para eu criar esse sistema com o banco de dados (equipes e jogos) e também para criar o programinha para inserir os resultados de cada partida?
       
      Eu costumava fazer isso no excel, mas agora quero deixar ele mais prático e automatizado. Eu sei que vou ter que estudar bastante para criar esse programa, mas eu só quero saber qual linguagem ou programa devo usar para estudar a coisa certa.
       
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.