Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.10.2019
Сообщений: 1

Найти разницу между суммой четных и нечетных чисел в заданном диапазоне

27.10.2019, 21:00. Показов 8444. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задачи:
Необходимо поставить ограничение в вводе 0<(A и B)<100. Само решение:
На ввод даётся 3, 6
Программа считает в промежутке от 3 до 6, то есть 3, 4, 5, 6 и ищет четные и нечетные
Четные суммируются (4+6=10), Нечетные суммируются (3+5=8)
Нужно найти разницу, программа выводит ответ 2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream> 
using namespace std;
int main() 
{
int a, b, c, s, k, answer;
    cout << "input first number" << endl;
    cin >> a;
    {
    if (a<0) cout << "Error, input x=>0" << endl;
    cout << "input second number" << endl;
    if (b<0) cout << "Error, input x=>0" << endl;
    cin >> b;
}
{
if (a % 2 == 0) a++;
if (b % 2 == 0) b--;
answer = (a + b) * ((b - a) / 2 + 1) / 2;
 
}
{ 
   int a, k;
   cin >> a >> k;
   a+=a%2;
   k-=k%2;
}
   cout << "Answer: " << (a+b)*(b-a+2)/4 - answer << endl;
   return 0;
   
}
//3,4,5,6
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2019, 21:00
Ответы с готовыми решениями:

Подсчитать разницу между суммой всех чётных и суммой всех нечётных элементов массива целых чисел
подсчитать разницу между суммой всех чётных и суммой всех нечётных элементов массива целых чисел помогите пожл

Найти разность между суммой четных и суммой нечетных чисел
Здравствуйте, помогите решить задачу на c++ Маша любит чётные числа, а Миша – нечётные. Поэтому они всегда радуются, если встречают...

Найти разницу между суммами четных и нечетных чисел масива
Помогите!!! Ввести с клавиатуры 1, 2 или 3. 1 - цикл с параметром 2 - цикл с предусловием 3 - цикл из постусловием Со следующей...

8
2 / 1 / 1
Регистрация: 18.04.2019
Сообщений: 11
27.10.2019, 21:43
Лучший ответ Сообщение было отмечено TopAlexsey как решение

Решение

Если говорить про синтаксическую ошибку, то тут
Цитата Сообщение от TopAlexsey Посмотреть сообщение
if (b<0) cout << "Error, input x=>0" << endl;
cin >> b;
Вы сначала сравниваете значение неинициализированной переменной b относительно нуля, хотя присваиваете ей значение только на следующей строке. Как же можно сравнивать , если переменная не хранит значение?

В остальном вообще не понятна логика программы. Для построения смысловой цепочки по заданию нужны четыре переменных(две на вход, и две на хранение сумм чётных/нечётных соответственно), проверка на условия, пробежка по диапазону, вычисление сумм , и , собственно, вывод.

Получается что-то типо того:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream> 
using namespace std;
int main()
{
    int a, b, evenSum = 0, unevenSum = 0;
    cout << "input first number" << endl;
    cin >> a;
    cout << "input second number" << endl;
    cin >> b;
    if (a > 0 && a < 100 && b > 0 && b < 100 && a <= b) 
    {
        for (int i = a; i <= b; i++)
        {
            if (i%2==0)
            {
                evenSum += i;
            }
            else
            {
                unevenSum += i;
            }
        }
        cout << "Answer: " << evenSum - unevenSum << endl;
    }
    else cout << "Error" << endl;
    system("pause");
    return 0;
}
1
6 / 7 / 2
Регистрация: 22.05.2019
Сообщений: 40
28.10.2019, 03:45
Цитата Сообщение от 404_Error Посмотреть сообщение
Кликните здесь для просмотра всего текста
Если говорить про синтаксическую ошибку, то тут

Вы сначала сравниваете значение неинициализированной переменной b относительно нуля, хотя присваиваете ей значение только на следующей строке. Как же можно сравнивать , если переменная не хранит значение?

В остальном вообще не понятна логика программы. Для построения смысловой цепочки по заданию нужны четыре переменных(две на вход, и две на хранение сумм чётных/нечётных соответственно), проверка на условия, пробежка по диапазону, вычисление сумм , и , собственно, вывод.

Получается что-то типо того:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream> 
using namespace std;
int main()
{
    int a, b, evenSum = 0, unevenSum = 0;
    cout << "input first number" << endl;
    cin >> a;
    cout << "input second number" << endl;
    cin >> b;
    if (a > 0 && a < 100 && b > 0 && b < 100 && a <= b) 
    {
        for (int i = a; i <= b; i++)
        {
            if (i%2==0)
            {
                evenSum += i;
            }
            else
            {
                unevenSum += i;
            }
        }
        cout << "Answer: " << evenSum - unevenSum << endl;
    }
    else cout << "Error" << endl;
    system("pause");
    return 0;
}
Немного подправлю: в коде нет проверки на размер unevenSum и evenSum, из-за этого unevenSum может быть больше, чем evenSum, их разность приведет к отрицательному числу. Хорошо, что это значение не записывается в unsigned short/int, а попадает в поток вывода, программа жива, а вот значение выдается некорректное. Попробуй ввести в своей программе числа от 1 до 10. Чтобы решить проблему: нужно возвести выражение в модуль, либо возвести в квадрат в корне, либо как в моем коде:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    /* Если не отображается русский язык в консоли,
     * открыть исходный код программы в блокноте,
     * перейти в Файл >> Сохранить как >> кодировка ANSI >>
     * >> Сохранить.
     */
    setlocale(LC_ALL, "");
    unsigned short from, to;
    cout << "Введите начало отсчета\n";
    cin >> from;
    cout << "Введите конец отсчета\n";
    cin >> to;
    if(from > 0 && to > 0 && from <= 100 && to <= 100 && from <= to) {
        unsigned short evenSum = 0, unevenSum = 0;
        for(unsigned short i = from; i <= to; ++i) {
            if(i % 2 == 0) evenSum += i;
            else unevenSum += i;
        }
        cout << "Разность четных и нечетных чисел в диапазоне от " << from << " до " << to << " = ";
        if(unevenSum > evenSum) cout << unevenSum - evenSum << endl;
        else cout << evenSum - unevenSum << endl;
    }
    else if(from > to) cout << "Ошибка: начало отсчета не должно превышать конец отсчета\n";
    else cout << "Ошибка: выход за диапазон значений (от 1 до 100)\n";
    system("pause");
    return 0;
}
найти большую сумму и вычесть из нее меньшую.

Добавлено через 13 минут
Эх, время редактирования истекло, поздно заметил то, что нужно поставить еще проверку на равенство a && b, при истинности выдавать их разность сразу, не входя в цикл.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <cstdio>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    /* Если не отображается русский язык в консоли,
     * открыть исходный код программы в блокноте,
     * перейти в Файл >> Сохранить как >> кодировка ANSI >>
     * >> Сохранить.
     */
    setlocale(LC_ALL, "");
    unsigned short from, to;
    cout << "Введите начало отсчета\n";
    cin >> from;
    cout << "Введите конец отсчета\n";
    cin >> to;
    if(from > 0 && to > 0 && from <= 100 && to <= 100 && from <= to) {
        unsigned short evenSum = 0, unevenSum = 0;
        cout << "Разность четных и нечетных чисел в диапазоне от " << from << " до " << to << " = ";
        if(from != to) {
            for(unsigned short i = from; i <= to; ++i) {
                if(i % 2 == 0) evenSum += i;
                else unevenSum += i;
            }
            if(unevenSum >= evenSum) cout << unevenSum - evenSum << endl;
            else cout << evenSum - unevenSum << endl;
        }
        else {
            putchar('0');
            putchar('\n');
        }
    }
    else if(from > to) cout << "Ошибка: начало отсчета не должно превышать конец отсчета\n";
    else cout << "Ошибка: выход за диапазон значений (от 1 до 100)\n";
    system("pause");
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.10.2019, 12:08
Цитата Сообщение от DiceLine Посмотреть сообщение
значение выдается некорректное
в чём на Ваш взгляд заключается некорректность решения ?
0
6 / 7 / 2
Регистрация: 22.05.2019
Сообщений: 40
28.10.2019, 14:03
Цитата Сообщение от Yetty Посмотреть сообщение
в чём на Ваш взгляд заключается некорректность решения ?
Я вроде расписал в чем, но могу повторить: разность unevenSum && evenSum может выдавать отрицательное значение. Разность должна быть положительная, на то это и разность = разница в единицах между unevenSum && evenSum.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.10.2019, 14:37
Цитата Сообщение от DiceLine Посмотреть сообщение
разность = разница в единицах
где Вы нашли такое определение ? разность - это результат вычитания двух чисел. разность может быть как положительной так и отрицательной или равняться нулю
1
6 / 7 / 2
Регистрация: 22.05.2019
Сообщений: 40
28.10.2019, 16:56
Цитата Сообщение от Yetty Посмотреть сообщение
где Вы нашли такое определение ? разность - это результат вычитания двух чисел. разность может быть как положительной так и отрицательной или равняться нулю
Вы были бы правы в случае точного условия задачи "найти разность: сумма четных - сумма нечетных", и выдавало бы отрицательное значение, то это корректно. Но тут не сказано должна быть это разность положительная или отрицательная. Я выбрал первый вариант, так как обычный пользователь далекий от математики не ждет разность в виде отрицательного числа. Даже вы, когда видите отрицательную разность, то в уме не явно возводите этот результат в модуль и понимаете, что -5 тоже самое, что и 5, так как это разность в величинах. И встречный вопрос: "Почему вам не нравится положительная разность?", ведь это такой же верный ответ.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.10.2019, 18:16
Цитата Сообщение от DiceLine Посмотреть сообщение
"Почему вам не нравится положительная разность?", ведь это такой же верный ответ.
если в задаче требуется найти разность между количеством чётных count_even и количеством нечётных count_odd, и count_even<count_odd разность будет отрицательна, и ответ с положительной разностью будет неправильным, неужели это непонятно ?
1
6 / 7 / 2
Регистрация: 22.05.2019
Сообщений: 40
28.10.2019, 21:49
Цитата Сообщение от Yetty Посмотреть сообщение
если в задаче требуется найти разность между количеством чётных count_even и количеством нечётных count_odd, и count_even<count_odd разность будет отрицательна, и ответ с положительной разностью будет неправильным, неужели это непонятно ?
Мне это понятно, согласен, что я не прав. Надеюсь моя программа кому-нибудь из новичков понадобится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2019, 21:49
Помогаю со студенческими работами здесь

Из файла создать массив, в котором найти разность между суммой четных чисел и произведением нечетных чисел
Создать файл, куда записать n целых чисел. Из файла создать массив, в котором найти разность между суммой четных чисел и произведением...

Найти разницу между суммами квадратов четных и нечетных элементов одномерного массива
Найти разницу между суммами квадратов четных и нечетных элементов одномерного массива

Найти разность между суммой цифр на четных и суммой цифр на нечетных местах
Нужен код для выведения разности между суммой цифр на четных и суммой цифр на нечетных местах. Условия задачи ниже. &quot;Для делимости...

Найти разницу сумм четных и нечетных чисел в случайном массиве
Скоро экзамен, помогите пожалуйста решить задачки! Найти разницу сумм четных и нечетных чисел в случайном массиве из 12 элементов.

Найти произведение нечетных чисел в заданном диапазоне
Найти произведение не четных чисел в заданном диапазоне.В С++.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru