۰۹-بهمن-۱۳۸۵, ۱۷:۳۵:۱۶
دوستان سلام.
يه برنامه دارم مينويسم مشابه اون چيزي كه در موبايل ها هست. يعني برنامه اي كه شماره ها رو كه ميزنيد توي ديكشنري ميگره نزديك ترين لغت رو به شماره هايي كه وارد كرديد براتون مياد.
دارم اين برنامه رو با ساختاري مشابه ساختار درختي مينويسم. ولي توي استراكچرم 3 تا اشاره گر از خودش گذاشتم.
حالا كه ميخوام مثلا داده جديد رو بهش وارد كنم با يه تابع بازگشتي اين كار رو كردم. تابع داخل خودش خودش رو فراخوني ميكنه و پيش ميره و همينطوري شاخه هاي درخت افزايش پيدا ميكنه و ...
مي برنامه رو كه اجرا ميكنم البته با TC و تحت داس فقط 2 بار عمل پيمايش رو انجام ميده بعد ميپره بيرون شما ميدونيد مشكلش چيه؟ نميدونم توي فضاي پشته آدرسها بهم ميريزه كه اينطوري ميشه يا برنامه اشكال داره.
اين كد برنامه :
يه برنامه دارم مينويسم مشابه اون چيزي كه در موبايل ها هست. يعني برنامه اي كه شماره ها رو كه ميزنيد توي ديكشنري ميگره نزديك ترين لغت رو به شماره هايي كه وارد كرديد براتون مياد.
دارم اين برنامه رو با ساختاري مشابه ساختار درختي مينويسم. ولي توي استراكچرم 3 تا اشاره گر از خودش گذاشتم.
حالا كه ميخوام مثلا داده جديد رو بهش وارد كنم با يه تابع بازگشتي اين كار رو كردم. تابع داخل خودش خودش رو فراخوني ميكنه و پيش ميره و همينطوري شاخه هاي درخت افزايش پيدا ميكنه و ...
مي برنامه رو كه اجرا ميكنم البته با TC و تحت داس فقط 2 بار عمل پيمايش رو انجام ميده بعد ميپره بيرون شما ميدونيد مشكلش چيه؟ نميدونم توي فضاي پشته آدرسها بهم ميريزه كه اينطوري ميشه يا برنامه اشكال داره.
اين كد برنامه :
کد:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*class info{
char y;
int x;
};*/
struct dic{
dic *right;
dic *middle;
dic *left;
char data;
char IsAlive;
};
void insertNchar(dic *,int);
void readdic(dic *);
void main()
{
clrscr();
int num,i;
char La,Ra,Ma;
dic *mydic=new dic();
mydic->IsAlive=NULL;
Ma=0;
Ra=0;
La=0;
for(i=0;i<5;i++)
{
scanf("%d",&num);
insertNchar(mydic,num);
}
getch();
}
void insertNchar(dic *root,int number)
{
if(root->IsAlive==NULL)
{
root->IsAlive=1;
switch(number)
{
case 1:
root->left->data='a';
root->middle->data='b';
root->right->data='c';
break;
case 2:
root->left->data='d';
root->middle->data='e';
root->right->data='f';
break;
case 3:
root->left->data='g';
root->middle->data='h';
root->right->data='i';
break;
case 4:
root->left->data='j';
root->middle->data='k';
root->right->data='l';
break;
case 5:
root->left->data='m';
root->middle->data='n';
root->right->data='o';
break;
case 6:
root->left->data='p';
root->middle->data='q';
root->right->data='r';
break;
case 7:
root->left->data='s';
root->middle->data='t';
root->right->data='u';
break;
case 8:
root->left->data='v';
root->middle->data='w';
root->right->data='x';
break;
case 9:
root->left->data='y';
root->middle->data='z';
break;
}
root->left->IsAlive=NULL;
root->middle->IsAlive=NULL;
root->right->IsAlive=NULL;
}
else
{
insertNchar(root->left,number);
insertNchar(root->middle,number);
insertNchar(root->right,number);
}
}
void readdic(dic *root)
{
if(root->IsAlive==NULL)
{
printf("%c",root->left->data);
}
else
{
printf("%c",root->left->data);
readdic(root->left);
// readdic(root->middle);
// readdic(root->right);
}
}