C/C++

Программа на с++.

Нужно написать программу, где пользователь вводит две переменные: start и end. Программа должна вывести все числа в промежутке между start и end, у которых сумма цифр = 15.
уточнение: start всегда меньше end; количество цифр в переменных не ограничено (то есть не "только четырехзначные" или "пятизначные". абсолютно любое количество); не можно, а НУЖНО использовать циклы while и for; самое главное - программа должна быть максимально простой (может быть длинной, но избегайте любые другие действия кроме простых условия, цикла и т.д.0
пожалуйста, если не можете выполнить все условия - не беритесь!
 #include  
#include
#include

using namespace std;

void trim(string& num)
{
while ('0' == *(num.begin()))
{
num.erase(num.begin());
}
}

bool isnumber(const string& num)
{
size_t i = 0;
const auto len = num.length();

do
{
if (num[i] < 0 || !isdigit(num[i]))
{
return false;
}
}
while (++i < len);

return true;
}

string input(const char* msg)
{
string value;

while (value.empty())
{
cout > value;

cin.ignore(0x1000, '\n');

if (!isnumber(value))
{
value.clear();
}
else
{
trim(value);
}
}

return value;
}

bool is_less_or_equal(const string& a, const string& b)
{
if (a.length() < b.length())
{
return true;
}

if (a.length() == b.length())
{
return a
ЮВ
Юрий Вронский
88 976
Лучший ответ
Юрий Вронский Требуется поправка. Функция inc принимает следующий вид:
 void inc(string& num, string::iterator it) 
{
if (*it < '9')
{
++(*it);
}
else
{
*it = '0';

if (it != num.begin())
{
--it;
}

if (it == num.begin() && *it == '0')
{
num = '1' + num;
return;
}

inc(num, it);
}
}
1) Если числа в диапазоне [start;end] могут быть любой значности (например, стозначные), то какие у Вас есть доступные средства для работы с ними? 2) Что значит "в промежутке между start и end" - строго больше start и строго меньше end или оба концевые значения диапазона включаются в него? Тут любая нечёткость в постановке задаче неуместна и совершенно неприемлема! 3) Вернёмся к первому пункту, в котором специально оговаривалось, что числа могут быть хоть даже миллионозначные (у Вас в вопросе количество цифр в числах вообще ничем не ограничено, чего для ЭВМ просто не может быть в принципе, о чём могли бы и сами подумать прежде чем писать ерунду): а Вы знаете какой-нибудь приемлемый алгоритм для конструирования целых чисел, сумма цифр которых равна пятнадцати, в некоем гигантском диапазоне значений? Ведь просто циклическим перебором прогнать через сито проверки все числа такого сверх-большого диапазона может оказаться делом невозможным и для супер-компьютеров. 4) А для чисел стандартных целых типов с не шибко широким диапазоном [start;end] можно всё сделать, например, так:
 #include  
using namespace std; int main()
{ int s; long long i, n, start, end;
cout > start >> end;
for (i = start + 1; i < end; i++) { n = abs(i);
s = 0; while (n) { s += n % 10; n /= 10; }
if (s == 15) cout
Αртем Εршов
Αртем Εршов
66 572