Создать частичный диапазон чисел в 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;
}