Написание программы на C ++, которая читает пять целых чисел и выполняет несколько задач - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать программу, которая читает пять целых чисел и выполняет максимальное, минимальное, среднее, сумму отрицательных целых чисел и сумму положительных целых чисел.В настоящее время проблема заключается в том, что среднее значение совпадает с суммой натуральных чисел, из которых сумма меньше, чем должна быть.Пример: я вставил 5, 5, 5, 5, 1 целых чисел.16 получается как среднее, а 16 - как сумма всех натуральных чисел.

int main()
{
    int min = 0, max = 0, num = 0, counter = 1, pos = 0, neg = 0;
    double total = 0;
    do {
        cout << "Enter in a number: ";
        cin >> num;
        if (num > max)
            max = num;
        if (num < min)
            min = num;
        if (num < 0) {
            neg += num;
        }
        if (num > 0) {
            pos += num;
        }
        total += num;
        counter++;
    } while (counter <= 5);

    total /= counter;
    cout << "Smallest Number of the list is: " << min << endl;
    cout << "Largest Number of the list is: " << max << endl;
    cout << "The sum of negative numbers is: " << neg << endl;
    cout << "The sum of positive numbers is: " << pos << endl;
    cout << "The average of all numbers is: " << total << endl;
    return 0;
}

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Значение счетчика переменных равно 6 после цикла while, поэтому среднее значение не является правильным.Либо замените его на 5 или на счетчик -1.

 total /= 5;

Или

total /= (counter-1);
0 голосов
/ 26 сентября 2018

Вы используете total в качестве среднего значения:

Здесь вы суммируете все свои числа: total += num;

Здесь вы печатаете сумму вместо среднего:

cout << "The average of all numbers is: " << total << endl;

Вместо этого ваша строка для печати должна быть:

cout << "The average of all numbers is: " << total /= counter << endl;

Для уточнения total /= counter разделит total на counter и установите новое значение на total.

0 голосов
/ 26 сентября 2018

Я обновил код для вас.Научиться использовать отладчик - это полезное упражнение, вы можете пошагово перебирать код, чтобы найти проблему.Это отличный способ выучить язык и сэкономить часы страданий.

#include <iostream>
#include <climits> // INT_MAX, INT_MIN

using namespace std;
int main()
   {
//make min and max the opposite so the first number entered with replace both
    int min = INT_MAX, max = INT_MIN, num = 0, counter = 0, pos = 0, neg = 0;
    double total = 0;
    do {
        cout << "Enter in a number: ";
        cin >> num;
        if (num > max)
            max = num;
        if (num < min)
            min = num;
        if (num < 0) {
            neg += num;
        }
        if (num > 0) {
            pos += num;
        }
        total += num;
        counter++;
    } while (counter < 5);  // go from 0 to 4, ending with counter == 5
    total /= counter;
    cout << "Smallest Number of the list is: " << min << endl;
    cout << "Largest Number of the list is: " << max << endl;
    cout << "The sum of negative numbers is: " << neg << endl;
    cout << "The sum of positive numbers is: " << pos << endl;
    cout << "The average of all numbers is: " << total << endl;
    return 0;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...