#include #include #include #include #include using namespace std; bool WIN=false; class leaf // один узел { public: int info; struct leaf *vniz, *right; leaf(int x) // конструктор вместо функции создания узла нового дерева { info = x ; vniz = right = NULL; cout<<"zapisal-"<9 && x!=-1) //если это не последняя цифра числа { if(vniz) vniz->f(x/10); else { vniz=new leaf((x/10)%10); if(x>100) vniz->f(x/10); else vniz->vniz=new leaf(-1); } } else // если это единственная цифра { if(x!=-1) { if(vniz) vniz=f(-1); else vniz=new leaf(-1); // создаем указатель-узел, указывающий на конечность набора } } } else { if(right) right->f(x); else { if(x!=-1) right=new leaf(x%10); else right=new leaf(x); if(x>9) right->f(x); else right->vniz=new leaf(-1); } } return this ; }; void fp(int x) //функция проверки наличия такого числа в дереве { int n=x%10; if(n==info) { if(x>9) { vniz->fp(x/10); } else { if(n=-1) WIN=1; else vniz->fp(-1); } } else if(right) right->fp(x); else WIN=false; } }; bool fr(char *name, leaf *yzel) //чтение дерева из файла { FILE *f; int c; if((f=fopen(name,"rb"))== NULL) { cout<<"\n ошибка открытия файла \n"; system("PAUSE"); return 0; } fseek(f, 0, SEEK_END ); c=ftell(f)/(sizeof(int)); rewind(f); /* отмотка файла на начало */ for(int i=0; i>n; if(!tree) tree=new leaf(n%10); tree->f(n); } for(int i=0; i<5; i++) { cin>>n; tree->fp(n); if(WIN) cout<<"est takoe chislo"<