Ir ao conteúdo
  • Cadastre-se
Marcelo Henrique Querino

C IMC parando o programa

Recommended Posts

quando executo ele roda, ai para quando escolho o numero do cadastro dentro do imc :/

 

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

#define MAX 20

struct aluno
{
          char nome[30];
          char email[30];
          double peso;
          float altura;
          float IMC;          
          int codigo;
};
          
        struct aluno valuno[20];    
void lis(){
    int i;
    for(i = 0; i< MAX; i++){
        printf(" %d: %s\n\n", i, valuno.nome);
        }
    }

void ex(){
    int codigo; 
    printf (" Digite o numero de cadastro para apagar ");
    scanf("%d", &codigo);
    sprintf(valuno[codigo].nome," ");
    }

    


int imc()
    {        
        int i, codigo;
        char nome[30];
        float altura=0, imc=0;    
        double peso=0;
                
    for(i = 0; i< MAX; i++){
            printf(" %d: %s\n\n", i, valuno.nome);
        }
        
            printf(" Digite o codigo do aluno para visualizar o IMC:");
            scanf("%f", codigo);
                    
                        peso = valuno[codigo].peso;  
                        altura = valuno[codigo].altura;
                        imc = peso/(altura*2);
                        
            if (imc < 18){
                printf("O seu IMC é %.2f e esta abaixo do peso\n",  imc);
                }
                
            if (imc == 18,5 && imc <=25){
               printf ("O seu IMC é %.2f e voce no peso ideal\n", imc);
               }
            
            if (imc == 25 && imc <=30){
               printf("O seu IMC é %.2f e voce esta acima do peso\n", imc);
               }
             
            if (imc == 30 && imc <=35){
               printf("O seu IMC é %.2f e voce esta com obsidade 1 grau\n", imc);
               }
               
            if (imc ==35 && imc <=40){
               printf("O seu IMC é %.2f e voce esta com obsidade 2 grau\n", imc);
               }
               
            if (imc >= 40 ){
               printf("O seu IMC é %.2f e voce esta com obsidade 3 grau\n", imc);
                   }            
    }

          
          
int main (){
    int opc, i;

    setlocale(LC_ALL, "Portuguese");
    
     do {
         system("cls");
        printf( " \t\t\t\t+------------------------------------+\n" );
        printf( " \t\t\t\t|---------CADASTRO DE ALUNOS---------|\n" );
        printf( " \t\t\t\t+------------------------------------+\n" );
        printf( " \t\t\t\t|------>(1)- Cadastra aluno          |\n" );
        printf( " \t\t\t\t|------>(2)- Listar alunos           |\n" );
        printf( " \t\t\t\t|------>(3)- Apagar aluno            |\n" );
        printf( " \t\t\t\t|------>(4)- Listar IMC do aluno     |\n" );
        printf( " \t\t\t\t|------>(0)- Sair                    |\n" );
        printf( " \t\t\t\t+------------------------------------+\n" );
        printf( " \t\t\t\t|-----------Digite a opcao-----------|>>>" );
        scanf( "%d", &opc );

    

    
    switch(opc) {
        
        case 1:
            for (i = 0; i <MAX; i++){
                
                int codigo;
                printf ("   +---------------------------------+\n");
                printf ("   |             CADASTRO            |\n");
                printf ("   +---------------------------------+\n");
                printf ("   |         Numero de cadastro      |>>>");
                scanf ("%d", &codigo);
                printf (" \n|-----------Nome do aluno---------|>>");
                  scanf ("%s", &valuno[codigo].nome);
                printf (" \n|----------Email do aluno---------|>>");
                  scanf ("%s", &valuno[codigo].email);
                printf (" \n|----------Peso do aluno----------|>>");
                  scanf ("%f", &valuno[codigo].peso);
                printf (" \n|----------Altura do aluno--------|>>");
                  scanf ("%f", &valuno[codigo].altura);
                
                if(opc == 0){
                    printf("Até logo...\n");
                    break;
                }
                
            
            break;
        case 2:lis();
          
            break;
          case 3 :ex();
              
              break;
          
    
        case 4 : imc();
            break;
    
        

        default:
            printf ("Opcao invalida\n");
            break;
        }
        system("pause");
    }
    
  }  while (1);
    return 0;
} 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
31 minutos atrás, Marcelo Henrique Querino disse:

printf(" Digite o codigo do aluno para visualizar o IMC:");
            scanf("%f", codigo);

 @Marcelo Henrique Querino Olá. Nesse scanf faltou o operador '&' e outra é q a variável codigo está como um int e não como um float. Você está lendo como sendo um float.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma observação. Sobre:

1 hora atrás, Marcelo Henrique Querino disse:

struct aluno
{
          char nome[30];
          char email[30];
          double peso;
          float altura;
          float IMC;          
          int codigo;
};

 

O IMC não é um atributo do aluno. É apenas um cálculo baseado em outros dados, ou seja, não precisa armazenar. Na hora que for usar o IMC, pega a altura e peso e calcula. Armazenar essa informação é redundância (desnecessária).

 

 

adicionado 8 minutos depois

PS: o código também não precisa armazenar... no contexto da sua lógica, é apenas a posição do vetor.

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

×