Jump to content
Fórum Script Brasil
  • 0

IMC


Question

alquém pode me dizer como consertar esse programa.

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>
#include<conio.h>

main()
{
    system("color 4f");
    setlocale(LC_ALL,"Portuguese");
    char nome[30];
    char sexo,M,F;
    int idade;
    float peso;
    float altura;
    float imc;
    int numero,contador=0;
    int registro=0;
    do
    {
    printf("\nESCOLHA AS OPÇÕES :\n");    
    printf("\n\tCADASTRO DE PESSOA  POR IMC\t\N");
    printf("1 - CADASTRAR UMA PESSOA:\N");
    printf("2 - VISUALIZAR RELATORIO DO IMC:\N");
    printf("3 - EXCLUIR CADASTRO:\N");
    printf("0 - SAIR\N");
    printf("Digite a opção:");
    scanf("%i", & numero);
    switch (numero)
    {
 case1:
     system("cls");
    printf("\N------INICIANDO O CADASTRO------------:\N ");
    printf("QUAL O SEXO DA PESSOA ?(M/F)\n");
printf("Digite o sexo (letra MAIÚSCULA): \n");
scanf("%c",&sexo);
printf("Digite o seu nome: \n");
scanf("%s",&nome);
printf("Digite a idade: \n");
scanf("%d",&idade);
printf("Digite o seu peso: \n");
scanf("%f", &peso);
printf("Digite a sua altura: \n");
scanf("%f", &altura);
contador++;
if(sexo=='M'||'F')
{
printf("sexo valido\n");
}
else{
printf("sexo invalido\n");    
}
imc = peso /(altura*altura);
if(imc<=18)
{
    printf("O seu índice de massa corporal é %.2f e você está abaixo do peso", imc);
}
if(imc>18 &&imc <=25)
{
    printf("O seu índice de massa corporal é %.2f e está normal\n",imc);  
}
if(imc>25 &&imc <=30)
{
printf("O seu índice de massa corporal é %.2f e você está com excesso de peso \n", imc);
}
if(imc>30 &&imc <=35)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau um\n", imc); 
}
if(imc>35 &&imc <=40)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau dois", imc);
}
if(imc>40)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau três", imc);
}
printf("\n------------------------------------------------------------------------------------------------\n");
     printf("SE DEJESA CONTINUAR APERTE 1 OU QUALQUER TECLA PRA SAIR\N");
    break;    
      }    
    case2: {
        break;
        system("cls");
     printf("Sexo: %c\n", sexo);
     printf("Nome: %s\n", nome);
     printf("Peso: %f\n", peso);
     printf("Altura: %f\n", altura);
     printf("Idade: %i\n", idade);
     printf("Imc: %f\n", imc);
    printf(nome," TEM ", idade," ANOS, SEU PESO É ",peso," KILOS, SUA ALTURA É ",altura,"SEU PESO É",peso,", E SEU ÍNDICE DE MASSA CORPORAL É ",imc);
    if(imc<=18)
{
    printf("O seu índice de massa corporal é %.2f e você está abaixo do peso", imc);
}
if(imc>18 &&imc <=25)
{
    printf("O seu índice de massa corporal é %.2f e está normal\n",imc);  
}
if(imc>25 &&imc <=30)
{
printf("O seu índice de massa corporal é %.2f e você está com excesso de peso \n", imc);
}
if(imc>30 &&imc <=35)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau um\n", imc); 
}
if(imc>35 &&imc <=40)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau dois", imc);
}
if(imc>40)
{
    printf("O seu índice de massa corporal é %.2f e você está com obesidade grau três", imc);
}
         printf("SE DEJESA CONTINUAR APERTE 1 OU QUALQUER TECLA PRA SAIR\N");
        break;
    }
    case3:{

    system("cls");
    sexo,M,F[0]='\0';
    nome[0]='\0';
    peso[0]='\0';
    altura[0]='\0';
    idade[0]='\0';
    imc[0]='\0';
    
    printf("\t----------CADASTRO EXCLUÍDO----------\N\N");
    system ("pause");
    system("cls");
    break;
        }
    case 0:{
    default:
    printf("OPÇÃO INVÁLIDA!\n");
    system("cls");
    break;
    } 
    while(1==1);
    system("PAUSE");
    return(0);
}

Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá, consegui fazer o projeto ao menos funcionar, haviam muitos erros envolvendo as chaves e alguns de sintaxe. Mudei o seu scanf para o std::cin que eu estou acostumado a utilizar para evitar problemas, mas acredito que o que você havia feito também está correto

* DEIXEI VARIAS ANOTAÇÕES NO FINAL DO CÓDIGO, VEJA *.

Uma dica: ORGANIZE, SEMPRE! Minha maior dificuldade foi colocar tudo no devido lugar pra entender onde estava os problemas. Creio que assim como eu você está iniciando nos estudos de C++, então boa sorte. Se te ajuda, recomendo o canal "CFB Cursos" no youtube, lá tem uma série de vídeos incrível em um curso de C++ com o professor bruno.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <conio.h>
#include <iostream>
main()
{
    system("color 4f");
    setlocale(LC_ALL,"Portuguese");
    char nome[30];
    char sexo,M,F;
    int idade;
    float peso;
    float altura;
    float imc;
    int numero = -1;
    int contador=0;
    int registro=0;
    printf("\nESCOLHA AS OPÇÕES :\n");
    printf("\n\tCADASTRO DE PESSOA  POR IMC\t\n");
    printf("1 - CADASTRAR UMA PESSOA:\n");
    printf("2 - VISUALIZAR RELATORIO DO IMC:\n");
    printf("3 - EXCLUIR CADASTRO:\n");
    printf("0 - SAIR\n");
    printf("Digite a opção:");
    std::cin >> numero;
    switch(numero)
    {
    case 1:
        {
        system("cls");
        printf("\n------INICIANDO O CADASTRO------------:\n ");
        printf("QUAL O SEXO DA PESSOA ?(M/F)\n");
        printf("Digite o sexo (letra MAIÚSCULA): \n");
        scanf("%c",&sexo);
        printf("Digite o seu nome: \n");
        scanf("%s",&nome);
        printf("Digite a idade: \n");
        scanf("%d",&idade);
        printf("Digite o seu peso: \n");
        scanf("%f", &peso);
        printf("Digite a sua altura: \n");
        scanf("%f", &altura);
        contador++;
        if(sexo=='M'||'F')
        {
            printf("sexo valido\n");
        }
        else
        {
        printf("sexo invalido\n");
        }
        imc = peso /(altura*altura);
        if(imc<=18)
        {
            printf("O seu índice de massa corporal é %.2f e você está abaixo do peso", imc);
        }
        if(imc>18 &&imc <=25)
        {
            printf("O seu índice de massa corporal é %.2f e está normal\n",imc);
        }
        if(imc>25 &&imc <=30)
        {
        printf("O seu índice de massa corporal é %.2f e você está com excesso de peso \n", imc);
        }
        if(imc>30 &&imc <=35)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau um\n", imc);
        }
        if(imc>35 &&imc <=40)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau dois", imc);
        }
        if(imc>40)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau três", imc);
        }
        printf("\n------------------------------------------------------------------------------------------------\n");
             printf("SE DEJESA CONTINUAR APERTE 1 OU QUALQUER TECLA PRA SAIR\n");
            break;
        }
    case 2: {
        system("cls");
        printf("Sexo: %c\n", sexo);
        printf("Nome: %s\n", nome);
        printf("Peso: %f\n", peso);
        printf("Altura: %f\n", altura);
        printf("Idade: %i\n", idade);
        printf("Imc: %f\n", imc);
        printf(nome," TEM ", idade," ANOS, SEU PESO É ",peso," KILOS, SUA ALTURA É ",altura,"SEU PESO É",peso,", E SEU ÍNDICE DE MASSA CORPORAL É ",imc);

        if(imc <= 18)
        {
            printf("O seu índice de massa corporal é %.2f e você está abaixo do peso", imc);
        }
        if(imc>18 &&imc <=25)
        {
            printf("O seu índice de massa corporal é %.2f e está normal\n",imc);
        }
        if(imc>25 &&imc <=30)
        {
            printf("O seu índice de massa corporal é %.2f e você está com excesso de peso \n", imc);
        }
        if(imc>30 &&imc <=35)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau um\n", imc);
        }
        if(imc>35 &&imc <=40)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau dois", imc);
        }
        if(imc>40)
        {
            printf("O seu índice de massa corporal é %.2f e você está com obesidade grau três", imc);
        }
        printf("SE DEJESA CONTINUAR APERTE 1 OU QUALQUER TECLA PRA SAIR\n");
        break;
    }

    case 3:
    {
        system("cls");
        sexo='\0';
        nome[0]='\0';
        peso='\0';
        altura='\0';
        idade='\0';
        imc='\0';

        printf("\t----------CADASTRO EXCLUÍDO----------\n\n");
        system ("pause");
        system("cls");
        break;
    }
    case 0:
    {
        default:
        printf("OPÇÃO INVÁLIDA!\n");
        system("cls");
        break;
    }
        
  } // FECHA O SWITCH
    system("pause");
    return 0;
} // FECHA A FUNÇÃO MAIN



/*

* Faltava a ultima chave da função main
* As condições do switch estavam juntas (case1, case2), etc [NÃO SEI SE ISTO É CORRETO, então separei para "case 1, case 2, etc"])
* sexo não é um vetor, portanto para atribuir valor à variavél basta indicar "sexo = '/0'" [A mesma coisa se aplica para as
variaveis peso, altura, idade e imc]. No caso da variavel nome você está atribuindo apenas o "/0" ao primeiro elemento do vetor STRING, esteja ciente disso.
* Você definiu um "do/while" e não colocou a condição de repetição no "while" apos o "do".
* Você utilizou o "break" logo após o case na estrutura switch
* Havia um "while(1==1)" no final, retirei pois não fazia nenhum sentido ele estar ali
* Você colocou o valor do return entre parenteses, isto não é necessario no C++, apenas defina o valor de retorno após chamar o "return"
* Imagino que você se confundiu tanto com o projeto que colou varias das chaves "{ e }" em locais totalmente aleatórios, o switch por exemplo terminava antes de
chegar ao próximo case.
* A falta de organização foi seu maior erro, um projeto organizado te ajuda E MUITO a achar problemas e/ou pedir ajuda a outras pessoas. 


*/

 

Edited by bleszerd
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148682
    • Total Posts
      644515
×
×
  • Create New...