Нужно написать программу, где пользователь вводит две переменные: start и end. Программа должна вывести все числа в промежутке между start и end, у которых сумма цифр = 15.
уточнение: start всегда меньше end; количество цифр в переменных не ограничено (то есть не "только четырехзначные" или "пятизначные". абсолютно любое количество); не можно, а НУЖНО использовать циклы while и for; самое главное - программа должна быть максимально простой (может быть длинной, но избегайте любые другие действия кроме простых условия, цикла и т.д.0
пожалуйста, если не можете выполнить все условия - не беритесь!
C/C++
Программа на с++.
#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
Юрий Вронский
Требуется поправка. Функция inc принимает следующий вид:
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
Похожие вопросы
- Написать программу на языке Си
- Некорректно работает написанная программа
- Написать программу на с++
- Помогите написать программу на С++
- Написать программы на СИ
- Помогите разобраться с программой
- Написать программу в С++ (нахождение площади трапеции)
- Помогите дополнить программу по условию
- Программа не выполняет условия задания, исходный массив меняет сам себя, помогите найти ошибку
- Передача данных в дочернюю программу и вывод из неё