#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <windows.h>
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-"<<x<<endl;
}
//методы дерева
leaf* f(int x) //функция добавления элементов в дерево
{
int n=x%10;
if(n==info || ( (info==x) && (x==-1) ) )
{
if(x>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<c; i++)
{
fread(yzel,sizeof(int),1, f);
}
if(!fclose(f))
return 1;
cout<<"\n данные успешно добавлены, нажмите любую клавишу для возврата в меню \n";
}
int main()
{
int n;
leaf *tree=NULL;
for(int i=0; i<5; i++)
{
cin>>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"<<endl;
else
cout<<"xuy"<<endl;
WIN=false;
}
return 0;
}