Регистрация
30 Июн 2013
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
после ввода 2 чисел консоль зависает и ничего более не выводит, программа для подсчёта суммы нечётных чисел в указанном диапазоне.



#include<iostream>



using namespace std;



void main()



{



setlocale(LC_ALL, "rus");





int min, max;



int sum = 0;



cout << "Введите начало диапазона:";



cin >> min;





cout << "Введите конец диапазона:";



cin >> max;





if (min % 2 == 0)



{



min + 1;



}





do {



sum + min;



sum + 2;









} while (min <= max);



cout << "Сумма всех нечётных чисел в диапазоне:"<< sum;



system("pause");



}
 
#include
#include
using namespace std;
unsigned uint_parse(const char* msg) {
cout > value;
cin.ignore(numeric_limits::max(), '\n');
return value;
}
unsigned long long odd_range_sum(const unsigned a, const unsigned b) {
const auto x = a >> 1ULL;
const auto y = (b >> 1ULL) + 1ULL;
const auto sum_all = y * y;
const auto sum_before = x * x;
return sum_all - sum_before;
}
int main() {
system("chcp 1251 > nul");
auto a = uint_parse("Введите начало диапазона: ");
auto b = uint_parse("Введите конец диапазона: ");
if (a > b) puts("Диапазон не существует!");
else {
auto sum = 0LL;
if (a == b && (a & 1)) sum = a;
else if (a != b) {
if (~a & 1) ++a;
if (~b & 1) --b;
sum = odd_range_sum(a, b);
}
cout
 
Алгоритм бредовый.

#include "iostream"
int main(){
int a,b,c=0; std::cout<<"a b: "; std::cin>>a>>b;
for(int i=a;i<=b;i++)c+=i*(i&1); std::cout<<c<<'\n';}
 
while (min<=max)
{
sum+=min;
min+=2;
}

В теории решается без циклов, см.: сумма арифметической прогрессии.
 
Назад
Сверху