Вычисление только положительных баллов И изменение результата среднего с целого на плавающее - PullRequest
0 голосов
/ 30 марта 2019

Вот мой код на C, мне нужна помощь с тем, как игнорировать отрицательные числа в printf («Вы ввели% d баллов. \ N», i); и в средний результат .Также, как изменить int Average; на float; , потому что я не получаю правильное среднее значение, когда меняю его на float.

Вот мой код:

int main()
{
int i, score, sum=0, n;
int average;

for(i=0; score>0; i++)
{
    printf("Enter score (4-10) :");
    scanf("%d", &score);
    if(score>0){
            sum = sum + score;

    }
}



 printf("You entered %d scores.\n", i);
 average = sum / i;
 printf("the average is: %d", average);
}

Требуемый вывод:

Программа рассчитывает среднее значение набранных вами баллов.Конец с отрицательным целым числом.Введите счет (4-10): 7Введите счет (4-10): 8Введите счет (4-10): 9Введите счет (4-10): 10Введите счет (4-10): 4Введите счет (4-10): 4Введите счет (4-10): 5Введите счет (4-10): - 1Вы ввели 7 баллов.Средняя оценка: 6,71

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Кажется, что среднее значение, сумма и оценки должны быть десятичными значениями (числами с плавающей запятой).

Это означает, что вам также необходимо изменить аргумент scanf и аргумент printf.

При делении целого числа i на сумму с плавающей точкой, нет необходимости умножать на 1,0, если сумма представляет собой число с плавающей точкой.

#include <stdio.h>
int main()
{
  int i;
  float score;
  float sum = 0;
  float average;

  for (i = 0; score > 0; i++) {
    printf("Enter score (4-10) :");
    scanf("%f", &score);  // accept decimals in the scores
    if (score > 0) {
      sum = sum + score;

    } else {
      break; /// leave the loop here to prevent incrementing i
    }
  }

  printf("You entered %d scores.\n", i);
  average = sum / i; // as sum is a float, this division will now work.
  printf("the average is: %2.2f", average); // print 2 decimal places as a float
}
0 голосов
/ 30 марта 2019
int main()
{
int i, score = 1, n;
float sum = 0.0, average;  //<-------------changed to float

for(i=0; score>0; i++)
{
    printf("Enter score (4-10) :");
    scanf("%d", &score);
    if(score>0){ 
            sum = sum + score;
    }
    else{
       break;
    }
}



 printf("You entered %d scores.\n", i);
 average = sum / i;
 printf("The average is: %f", average); //<--- changed to %f you can use &.2f to print 2 digits after . 

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