Подскажите пожалуйста написать программу выводящую сумму всех целых нечетных чисел в веденном диапазоне.
вот, что написал
int a,b,summ=0;
cout<<"Введите начало диапазона: ";
cin>>a;
cout<<"Введите конец диапазона: ";
cin>>b;
while(a<=b)
{
if(a%1==0)
{
summ=summ+a;
a++;
}
}
cout<<"Сумма нечетных чисел: "<<summ<< endl;
я так понимаю если "а" будет равно 5ти, а "b" = 10 то ответ должен быть 5+7+9 = 21, а мое творение показывает 45
никак не могу сообразить как это сделать с циклом while ((
Другие языки программирования и технологии
Помогите пожалуйста разобраться с циклом while c++
#include <iostream>
#include <cassert>
#include <conio.h>
using namespace std;
enum CHOICE { ESC = 27, CLEAR = 48, NATURAL, EVEN, ODD };
typedef unsigned long long ullong;
typedef unsigned long ulong;
ullong natural_numbers(ulong);
ullong natural_numbers(ulong, ulong);
ullong even_numbers(ulong);
ullong even_numbers(ulong, ulong);
ullong odd_numbers(ulong);
ullong odd_numbers(ulong, ulong);
bool is_natural_number(ulong);
int main() {
setlocale(LC_CTYPE, "Russian");
bool run = true;
while (run) {
cout << "\n Введите начало дапазона: ";
ulong start;
cin >> start;
cout << " Введите конец дапазона: ";
ulong last;
cin >> last;
cout << "\n Чтобы вычислить сумму натурального ряда, нажмите 1\n"
<< " Чтобы вычислить сумму чётного ряда, нажмите 2\n"
<< " Чтобы вычислить сумму нечётного ряда, нажмите 3\n"
<< " Чтобы удалить предыдущие результаты, нажмите 0\n"
<< " Для выхода из программы, нажмите ESC\n\t ";
ullong sum = 0;
int choice = INT_MAX;
if (is_natural_number(start) && is_natural_number(last)) choice = _getch();
switch (choice) {
case CLEAR: system("cls"); break;
case ESC: run = false; break;
case NATURAL: sum = natural_numbers(start, last); break;
case EVEN: sum = even_numbers(start, last); break;
case ODD: sum = odd_numbers(start, last); break;
default: cout << "\n Хьюстон, у нас проблемы с данными! \n\a\a\a";
}
if (sum) cout << "\n\t Сумма ряда = " << sum << endl;
cin.sync();
}
}
ullong natural_numbers(ulong last) {
if (!last) return last;
ullong n = last;
return n * (n + 1) >> 1;
}
ullong natural_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return natural_numbers(last) - natural_numbers(start - 1);
}
ullong even_numbers(ulong last) {
if (!last) return last;
ullong n = last >> 1;
return n * (n + 1);
}
ullong even_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return even_numbers(last) - even_numbers(start - 1);
}
ullong odd_numbers(ulong last) {
if (!last) return last;
ullong n = (last >> 1) + (last & 1);
return n * n;
}
ullong odd_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return odd_numbers(last) - odd_numbers(start - 1);
}
bool is_natural_number(ulong n) {
return n? true : false;
}
#include <cassert>
#include <conio.h>
using namespace std;
enum CHOICE { ESC = 27, CLEAR = 48, NATURAL, EVEN, ODD };
typedef unsigned long long ullong;
typedef unsigned long ulong;
ullong natural_numbers(ulong);
ullong natural_numbers(ulong, ulong);
ullong even_numbers(ulong);
ullong even_numbers(ulong, ulong);
ullong odd_numbers(ulong);
ullong odd_numbers(ulong, ulong);
bool is_natural_number(ulong);
int main() {
setlocale(LC_CTYPE, "Russian");
bool run = true;
while (run) {
cout << "\n Введите начало дапазона: ";
ulong start;
cin >> start;
cout << " Введите конец дапазона: ";
ulong last;
cin >> last;
cout << "\n Чтобы вычислить сумму натурального ряда, нажмите 1\n"
<< " Чтобы вычислить сумму чётного ряда, нажмите 2\n"
<< " Чтобы вычислить сумму нечётного ряда, нажмите 3\n"
<< " Чтобы удалить предыдущие результаты, нажмите 0\n"
<< " Для выхода из программы, нажмите ESC\n\t ";
ullong sum = 0;
int choice = INT_MAX;
if (is_natural_number(start) && is_natural_number(last)) choice = _getch();
switch (choice) {
case CLEAR: system("cls"); break;
case ESC: run = false; break;
case NATURAL: sum = natural_numbers(start, last); break;
case EVEN: sum = even_numbers(start, last); break;
case ODD: sum = odd_numbers(start, last); break;
default: cout << "\n Хьюстон, у нас проблемы с данными! \n\a\a\a";
}
if (sum) cout << "\n\t Сумма ряда = " << sum << endl;
cin.sync();
}
}
ullong natural_numbers(ulong last) {
if (!last) return last;
ullong n = last;
return n * (n + 1) >> 1;
}
ullong natural_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return natural_numbers(last) - natural_numbers(start - 1);
}
ullong even_numbers(ulong last) {
if (!last) return last;
ullong n = last >> 1;
return n * (n + 1);
}
ullong even_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return even_numbers(last) - even_numbers(start - 1);
}
ullong odd_numbers(ulong last) {
if (!last) return last;
ullong n = (last >> 1) + (last & 1);
return n * n;
}
ullong odd_numbers(ulong start, ulong last) {
if (start > last) swap(start, last);
assert(start != 0);
return odd_numbers(last) - odd_numbers(start - 1);
}
bool is_natural_number(ulong n) {
return n? true : false;
}
Не if(a%1==0) а if(a%2==1)
Вадим Смагин
если меняю так как ты написал, то программа вообще не выдает ответ
выбирай вариант if
if(a%2!=0)
if(a%2==1)
if(a%2)
if(a&1)
if(a%2!=0)
if(a%2==1)
if(a%2)
if(a&1)
Вадим Смагин
если я меняю условия if то у меня программа не выдает вообще ответа, после введенных чисел диапазона просто молчит, может не только в if дело ?
с if сильно намудрил. Возьми проще
if (a%2<>0)
if (a%2<>0)
Вадим Смагин
так не работает, ставлю <> сразу ошибка
Похожие вопросы
- Помогите пожалуйста разобраться с вопросами по информатике и программированию
- здравствуйте, помогите пожалуйста, что не так вот c C++ кодом:
- Паскаль! Помогите пожалуйста разобраться в задачке.
- Помогите пожалуйста! нужно написать программу на C++
- Всем привет! Помогите, пожалуйста, разобраться с алгоритмическим языком (псевдокодом)
- Помогите, пожалуйста, решить задачу на языке C++
- помогите пожалуйста, люди добрые. задача на C#.
- .помогите пожалуйста двумерный массив на языке c++
- Помогите пожалуйста перевести код программы с C++ на Си.
- C#.Цикл while и метод ReadLine()