Помогите найти ошибку в коде и справить ее, c++ - Вопросы по С+

Вопрос Помогите найти ошибку в коде и справить ее, c++

Регистрация
23 Ноя 2013
Сообщения
101
Репутация
0
Спасибо
0
Монет
0
Мой код:

// Найти среднее арифметическое нечетных чисел из заданного диапазона



#include <iostream>

using namespace std;



int main()

{

int x1, x2;

cout << "x1 = ";

cin >> x1;

cout << "x2 = ";

cin >> x2;

int k = 0; double sum = 0;

for (int i = x1; i <= x2; i+=2)

{

if (i % 2 == 1)

{

sum += i;

k++;

}

}

double sr = sum / k;

cout << "sr = " << sr << endl;

return 0;

}

Препод сказал, что ошибка в if, но я не понимаю как ее исправить
 

Vas

Capitan

Vas

Capitan
Регистрация
16 Июл 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
#include
using namespace std;
int main() {
cout > a;
cout > b;
if (a > b) swap(a, b);
auto count = 0U;
auto sum = 0;
if (~a & 1) ++a;
for (auto i = a; i
 
Регистрация
30 Дек 2012
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Если x1 будет четным, то цикл будет идти только по четным числам (потому что шаг +2) и ни одно число не будет подсчитано.
Лучшее решение - привести x1 к ближайшему большему нечетному, если оно четное.
if (x1%2==0) ++x1;
и тогда в цикле не нужна проверка на четность, потому что все числа в цикле станут нечетными.
При желании можно обойтись и без без подсчета k внутри цикла.
после приведения x1 к нечетному числу:
k = (x2-x1)/2 + 1;
 
Сверху Снизу