Проблема с использованием функции count

#c #function

#c #функция

Вопрос:

Ниже, если мой код, который должен запрашивать у пользователя 2 числа и выводить сумму всех четных чисел между ними. У меня возникли проблемы только с использованием функции count, поскольку я не верю, что я правильно ее настраиваю, и Google пока только помог мне

 #include <iostream>

using namespace std;
int main() {
    int num1, num2, sum;
    while(num1 > num2) {
        cout << "Enter 2 numbers seperated by a space. " << endl;
        cout << "First number must be smaller then second number. " << endl;
        cin >> num1 >> num2;
        cout << endl;
    }
    if(num1 % 2 == 0)
        count(== num1);
    else
        count(== num1   1);
    while(count(<= num2)) {
        sum = sum   count;
        count = count   2;
    }

    cout << "The sum of the even intergers between " << num1 << "and " << num2
         << " = " << sum << endl;
    return 0;
}
  

Комментарии:

1. Вы сравниваете num1 и num2 перед их инициализацией. Кроме того, цикл вообще не нужен. Попробуйте привести несколько примеров вручную, и вы увидите, что существует формула, которую вы можете использовать для непосредственного вычисления ответа.

2. «У меня возникли проблемы только с использованием функции count, поскольку я не верю, что я правильно ее настраиваю, и Google пока только помог мне » — у вас нет функции count, и даже если бы она у вас была, как Google может помочь вам интерпретировать ваш собственный код? И, как указал @cigien: Здесь у вас неопределенное поведение: while (num1 > num2)

3. Я должен использовать цикл, который требуется для этого назначения

4. @JerryMalson Дело не в этом. Вы упоминаете, что у вас проблема с функцией count, но у вас нет функции count. Определите, где ваша собственная программа делает неправильные вещи, распечатав значения, которые она использует при запуске, и вы увидите, где она делает неправильные вещи.

5. @TedLyngmo Я понял ту часть, на которую я отвечал предыдущему комментатору до вас, я действительно выяснил проблему с моей программой, и теперь она работает нормально. Я впервые изучаю какой-либо язык, поэтому для меня все еще очень ново. В любом случае спасибо за помощь

Ответ №1:

В вашем коде нет функции count(), а также нет стандартной функции count() в стандартной библиотеке C , которая делает то, что вы хотите (хотя std::accumulate() и близко). В любом случае, вам действительно не нужна такая функция, достаточно простого цикла.

Попробуйте что-то более похожее на это:

 #include <iostream>
#include <limits>
using namespace std;

int main() {
    int num1, num2, sum = 0;

    do {
        cout << "Enter 2 numbers seperated by a space. " << endl;
        cout << "First number must be smaller then second number. " << endl;
        if (cin >> num1 >> num2) {
            if (num1 < num2) break;
        }
        else {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), ‘n’);
        }
        cout << endl;
    }
    while (true);

    for (int num = num1; num <= num2;   num) {
        if ((num % 2) == 0)
            sum  = num;
    }

    cout << "The sum of the even integers between " << num1 << " and " << num2 << " = " << sum << endl;
    return 0;
}
  

Если вы хотите исключить num1 и num2 из суммы, просто измените цикл соответствующим образом:

 for (int num = num1   1; num < num2;   num) {