#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) {