Как еще найти сумму всех целых нечетных чисел в диапазоне, указанном пользователе?
Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователе.
#include<iostream>:
using namespace std;
int main()
setlocale(LC_ALL, "rus");
int val1; // начало диапазона
int val2; // конец диапазона
int sum = 0; // переменная хранящая сумму
cout << "Укажите диапозон чисел:\nПервое число: " << endl;
cin >> val1;
cout << "Второе число: " << endl;
cin >> val2;
while (val1 <= val2)
{
if (val1 % 2 != 0)
{
sum += val1;
}
val1++;
}
cout << "Результат: " << sum;
Как сделать так чтобы не каждый раз проверять четность числа, а проверить это перед циклом один раз, если четное, то прибавить единицу. А в цикле уже ничего не проверять, а просто прибавлять двойку к числу? Так можно оптимизировать код, но я не знаю как это сделать
Ответы (4 шт):
Автор решения: Utsiye
→ Ссылка
#include<iostream>:
using namespace std;
setlocale(LC_ALL, "rus");
int val1; // начало диапозона
int val2; // конец диапозона
int sum = 0; // переменная хранящая сумму
cout << "Укажите диапозон чисел:\nПервое число: " << endl;
cin >> val1;
cout << "Второе число: " << endl;
cin >> val2;
if(val1%2!=0)
{
val1++
}
while (val1 <= val2)
{
if (val1 % 2 != 0)
{
sum += val1;
}
val1++;
}
cout << "Результат: " << sum;
Автор решения: Валерий
→ Ссылка
#include<iostream>:
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
int val1; // начало диапозона
int val2; // конец диапозона
int sum = 0; // переменная хранящая сумму
cout << "Укажите диапозон чисел:\nПервое число: " << endl;
cin >> val1;
cout << "Второе число: " << endl;
cin >> val2;
if (val1 % 2 == 0)
{
val1++;
}
while (val1 <= val2)
{
sum += val1;
val1 += 2;
}
cout << "Результат: " << sum;
}
Я нашел правильный ответ
Автор решения: MBo
→ Ссылка
Если действительно нужно оптимизировать, то вспомним, как в 7 классе изучали арифметическую прогрессию. И циклов не надо.
val1 += (1 - val1 & 1);
val2 -= (1 - val2 & 1);
return (val2 - val1 + 2) * (val1 + val2) / 4;
Первые строчки меняют чётные числа на большее и меньшее нечётные.
Автор решения: Harry
→ Ссылка
int sum(int a, int b)
{
a = (a-(a&1))/2;
b = (b+(b&1))/2;
return b*b - a*a;
}
Передавать в функцию значения так, чтоб a <= b...