Создать частичный диапазон чисел в C++

Мне нужна помощь в определении диапазона чисел. Мне нужно сделать так, чтобы он частично определял диапазон чисел. Например, если ввести от 1 до 10 с диапазоном 5, выводом будет 1-5 6-10. Если от 1 до 12 с диапазоном 5, вывод будет 1-5 6-10 11 12 11-20. Он выведет неоптимизирующие числа и добавит недостающий диапазон. Моя программа выводит ошибочный результат:

Input: rangeStart = 1, rangeEnd = 6, periodLength = 4

Output: 1-4 5 6

Мне нужно чтобы было:

Input: rangeStart = 1, rangeEnd = 6, periodLength = 4

Output: 1-4 5 6 5-8

Ниже еще пример ввода и вывода:

Input: rangeStart = 7, rangeEnd = 23, periodLength = 10

Output: 1-10 7 8 9 10 11-20 21 22 23 21-30

Мой код:

int k = rangeEnd / periodLength;
while (k--) {
    res << rangeStart << "-" << rangeStart + periodLength - 1 << std::endl;
    rangeStart += periodLength;
}
while (rangeStart <= rangeEnd) {
    res << rangeStart++ << std::endl;
}

Будут вопросы, пожалуйста спрашивайте.


Ответы (1 шт):

Автор решения: Владимир Клыков
int rangeStart = 1;
int periodLength = 3 ;
int rangeEnd = 6;
int k = rangeEnd / periodLength;
while (k--) {
    cout << rangeStart << "-" << rangeStart + periodLength - 1 << std::endl;
    rangeStart += periodLength;
}
while (rangeStart <= rangeEnd) {
    cout << rangeStart++ << std::endl;
}
k = rangeEnd % periodLength -1;
rangeStart = (rangeEnd / periodLength)*periodLength+1;
while (k>0&k--) {
    cout << rangeStart << "-" << rangeStart + periodLength - 1 << std::endl;
    rangeStart += periodLength;
}
→ Ссылка