Пропуск последнего ввода при использовании scanf - PullRequest
0 голосов
/ 05 февраля 2019

есть проблема с моей программой C, которая рассчитывает калории на основе возраста, половой массы тела, роста и уровня активности.он пропускает мой последний входной сегмент (который запрашивает пол).Помогите кому-нибудь ???

#include <stdio.h>

int
main (void)

{
    float weight, height, age,  activity, none, moderate, active, VeryActive, gender, boy, girl, 
          baseg, baseb, caloriesb1, caloriesb2, caloriesb3, caloriesb4, caloriesg1, caloriesg2, caloriesg3, caloriesg4;


    printf ("Enter your weight (kg): ");
    scanf ("%f", &weight);

    printf ("Enter your age (years): ");
    scanf ("%f", &age);

    printf ("enter your height (cm): ");
    scanf ("%f", &height);

    printf ("enter activity level (none/moderate/active/VeryActive): ");
    scanf ("%f", &activity);

    printf ("enter gender (boy/girl): ");
    scanf ("%f", &gender);


    if (gender == boy)
        {
        baseb = 10*weight + 6.25*height - 5*age + 5;
        caloriesb1 = 1.2*baseb;
        caloriesb2 = 1.375*baseb;
        caloriesb3 = 1.55*baseb;
        caloriesb4 = 1.725*baseb;

            if (activity == none)
                {
                printf ("daily calories is: %f, ", caloriesb1);
                } 

            else if (activity == moderate)
                {
                printf ("daily calories is: %f, ", caloriesb2);
                }

            else if (activity == active)
                {
                printf ("daily calories is: %f, ", caloriesb3);
                }

            else if (activity == VeryActive)
                {
                printf ("daily calories is: %f, ", caloriesb4);
                }

            else 
                {
                printf ("invalid activity level for boy \n");
                }
        }


    else if (gender == girl)
        {
        baseg = 10*weight + 6.25*height - 5*age - 161;
        caloriesg1 = 1.2*baseg;
        caloriesg2 = 1.375*baseg;
        caloriesg3 = 1.55*baseg;
        caloriesg4 = 1.725*baseg;

            if (activity == none)
                {
                printf ("daily calories is: %f, ", caloriesg1);
                } 

            else if (activity == moderate)
                {
                printf ("daily calories is: %f, ", caloriesg2);
                }

            else if (activity == active)
                {
                printf ("daily calories is: %f, ", caloriesg3);
                }

            else if (activity == VeryActive)
                {
                printf ("daily calories is: %f, ", caloriesg4);
                }

            else 
                {
                printf ("invalid activity level for gitl \n");
                }
        }


    else
        { 
        printf ("invalid gender statment \n");
        }



return (0);

}

1 Ответ

0 голосов
/ 05 февраля 2019

Поскольку вы принимаете ввод как boy или girl, вам нужно использовать char в случае float.Объявите gender как char.Уточните основы о типах данных и использовании ==.

printf ("enter gender (boy/girl): ");    
scanf ("%c", &gender); 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...