Отображение максимальных и минимальных числовых значений в C - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в программировании и пытаюсь завершить упражнение по программированию, в котором учитель (пользователь) будет вводить оценки и будет непрерывно получать подсказки, пока они не введут "-1".Когда оно будет введено, запрос будет завершен, и он должен будет вывести среднее значение всех введенных пользователем оценок, а также самый высокий и самый низкий введенные оценки.

Вот код, который у меня есть.

#include <stdio.h>

int main()
{
    unsigned int counter;
   float average;
    int grade, total, max, min;

    total=0;
   counter=0;
   max=100;
   min=0;

   printf("Please enter grades, enter -1 to stop\n");
   scanf ("%d", &grade);
   max=min=grade;

   while ( grade !=-1 ) {
       total = total+ grade;
       counter= counter +1;
       if (grade > max)
       max = grade;
       if (grade < min)
       min = grade;
       printf("Please enter grades, enter -1 to stop\n");
   scanf ("%d", &grade);
   max=min=grade;
   }

if ( counter !=0 ) {
    average = (float) total / counter;
    printf("Your average is %.2f\n",average);
    printf("Your highest grade is %d\n", max);
    printf("Your lowest grade is %d\n", min);
}
  else {
      printf("No grades were entered\n");
  }

}

Вот пример ввода, который получается из кода:

Please enter grade, enter -1 to stop                                                                            
95                                                                                                              
Please enter grade, enter -1 to stop                                                                            
87                                                                                                              
Please enter grade, enter -1 to stop                                                                            
-1                                                                                                              
Your average is 91.00                                                                                           
Your highest grade is -1                                                                                        
Your lowest grade is -1    

Я не могу понять, почему он не отображает правильные значения, при этом 95 - самое высокое, а 87 - самое низкое в этом случае.,Буду признателен за любую помощь, поскольку это единственная часть программы, которую мне нужно решить.

Спасибо.

Ответы [ 2 ]

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

Здесь:

   #include <stdio.h>

int main()
{
    unsigned int counter;
   float average;
    int grade, total, max, min;

    total=0;
   counter=0;
   max=100;
   min=0;

   printf("Please enter grades, enter -1 to stop\n");
   scanf ("%d", &grade);
   max=min=grade;

   while ( grade !=-1 ) 
  {
       total = total+ grade;
       counter= counter +1;
       if (grade > max)
        {
         max = grade;
        }
       if (grade < min)
        {
         min = grade;
        }
       printf("Please enter grades, enter -1 to stop\n");
   scanf ("%d", &grade);

   }

if ( counter !=0 ) 
{
    average = (float) total / counter;
    printf("Your average is %.2f\n",average);
    printf("Your highest grade is %d\n", max);
    printf("Your lowest grade is %d\n", min);
}

  else 
{
      printf("No grades were entered\n");
  }
0 голосов
/ 20 февраля 2019

В цикле while вы упоминаете min = max = оценка во второй раз в программе.То есть берется значение -1 из оценки, которая используется для остановки программы.Прокомментируйте эту строку и попробуйте, чтобы она работала.

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