Как я могу исключить -1 из цикла do… while? - PullRequest
0 голосов
/ 09 февраля 2019

Предполагается, что программа рассчитывает среднее число, введенное до -1, но мой код вычисляет среднее с включенным -1.

Как я могу исключить -1 из расчета до суммы и среднего?

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

int main() {
  int n;
  int sum = 0, i = 0;
  float av;
  do {
    scanf("%d", &n);
    sum += n;
    i++;
  } while (n != -1);
  av = (float)sum / i;
  printf("%f", av);
  return 0;
}

1 Ответ

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

В вашем решении ваш код будет читать n, равный -1, и добавлять, а затем проверять, что является причиной этой проблемы.

Вы можете сделать это следующим образом:

do {
  scanf("%d", &n);
  if (n != -1) sum += n;
  i++;
} while (n != -1);

Или даже лучше, вот так:

while (1) {
  scanf("%d", &n);
  if (n == -1) break;
  sum += n;
  i++;
}
...