Регистрация | Вход
#include <iostream>using namespace std;string next_number (string current_number){ //заданная _заранее_ в начальной школе модель распределения цифр char digits_model[] = {'0','1','2','3','4','5','6','7','8','9'}; string number = current_number; //начинаем просматривать число с конца к началу int i = number.length()-1; while (1) { //если цифра не самая первая if (i>-1) { //и если цифра не равна девятке if (current_number[i]!='9') { //то заменяем её цифрой, которая следует //в _заранее_ заданной модели распределения цифр за текущей //и возвращаем результат number[i] = digits_model[(int)(current_number[i]-'0')+1]; return number; } //если же это всё-таки девятка else { //то заменяем её на ноль и просматриваем следующую цифру number[i]='0'; --i; } } //если же цифра самая первая,т.е. //в результате просмотра выяснилось, //что все цифры в числе - девятки else { //до приписываем у началу единицу //и возвращаем результат number.insert(0,"1"); return number; } }}int main(void){ unsigned k = 0; string N; //для начала от 1 до 42 cout<<endl<<endl; N = "0"; for (k=0; k<42; k++) { cout<<N<<","; N=next_number(N); } //от 80 до 120 cout<<"..."<<endl<<endl; N = "79"; for (k=0; k<40; k++) { cout<<N<<","; N=next_number(N); } //вывести 40 чисел, следующих за произвольным числом, например, 9984 cout<<"..."<<endl<<endl; N = "9984"; for (k=0; k<40; k++) { cout<<N<<","; N=next_number(N); } cout<<"..."<<endl<<endl; return 0;}