Расчет среднего числа пройденных миль за день с помощью цикла while - PullRequest
0 голосов
/ 30 апреля 2019

Я не могу получить вводимые данные и получить правильный вывод для среднего значения.

Код ниже, насколько я это сделал. Любая помощь будет принята с благодарностью!

#include <stdio.h>

int main() {
  /* variable definition: */
   int days;
   float avg, miles;
/* Initialize */
   days=1;
// Loop through to input values

while(days<=7) {
      printf("Enter the number of miles for each day walked.");
      // use %lf for double, %f for float
      scanf("%f", &miles);
      days++;
      }

   avg = miles / days;
   printf("average is %f\n " , avg );
   return 0;
} // end main

1 Ответ

1 голос
/ 30 апреля 2019

Как сказал Джон 3136, вы не отслеживаете пройденные мили.Вы сканируете в милях, но не отслеживаете сумму миль.Ваше среднее значение - это просто ваши последние введенные мили, разделенные на 7.

Вот предлагаемое решение:

int main(void)
{
    // variable definition
    int days = 0;
    float avg = 0, miles = 0;

    // Loop through to input values
    while(days < 7)
    {
        printf("Enter the number of miles for each day walked: ");
        scanf("%f", &miles);
        avg += miles;
        days++;
    }

   avg /= days;
   printf("average is %.2f\n " , avg);

   return 0;
}

С помощью Джонатана Леффлера вот улучшенная версия предыдущего кода:

#include <stdio.h>

int main(void)
{
    // variable definition
    int days = 0;
    double miles = 0.0, total_miles = 0.0;

   // Loop through to input values
    while(days < 7)
    {
        printf("Enter the number of miles for day %d: ", days + 1);

        if(!scanf("%lf", &miles))
            return -1;

        total_miles += miles;
        days++;
    }

   printf("Total miles: %.2lf / %d Days = %.2lf Average miles per day.\n",
           total_miles, days, (days > 0) ? total_miles / days : 0.0);

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