سلام.من یه برنامه با لینک لیست دارم می نویسم.به این ترتیب که باید اطلاعت چند دانشجو رو بگیره .که این دانشجو ها یا دانشجوی دانشکده کامپیوتر اند یا مکانیک و حالا یه سری تابع هم واسه کارایی مثل حذف دانشجو و ... داره.من وقتی برنامه رو اجرا یا دیباگ می کنم فقط اطلاعت 3 دانشجو رو می گیره و منتظر دستور بعدی میشه.در حالی که هر چی هم می خوام تو کنسول تایپ کنم چیزی تایپ نمیشه.درواقع تو دیباگ اینطوری میشه که میره سراغ if بعدی برنامه(یه تابع دیگه که دانشجوی n رو از نظر معدل چاپ میکنه) و همین طور منتظر می مونه.یعنی نمیدونم چجوریه که تا سه دانشجو بیشتر نمیگیره.ممنون میشم اگه کمکم کنید.
int conter_comp=0;
int conter_mach=0;
struct student
{
char name[15];
char family[15];
char college[10];
float ave;
int ID;
student *next;
student *prev;
};
student *head=0;
bool _input(char name[15],char family[15],int ID ,float ave,char college[10])
{
int flag=0;
student *new_student=new student;
new_student->ave=ave;
new_student->ID=ID;
strcpy(new_student->name,name);
strcpy(new_student->family,family);
strcpy(new_student->college,college);
if(!head)
{
head=new_student;
new_student->next=0;
return true;
}
student *p,*q;
p=q=head;
while(p && p->ave > ave)
{
flag=1;
p=q;
p=p->next;
}
if(flag==0)
{
head=new_student;
new_student->next=p;
}
q->next=new_student;
new_student->next=p;
new_student->prev=q;
p->prev=new_student;
return true;
}
bool print_n_college(char depa[4],int number)
{
student *inf,*p;
p=inf=head;
if((strcmp(depa,"COMP")==0) && (number>conter_comp) )
{
cout<<"ERR"<<endl;
return false;
}
else if((strcmp(depa,"MACH")==0) && (number>conter_comp))
{
cout<<"ERR"<<endl;
return false;
}
else
{
for(;inf;inf=inf->next)
{
if(strcmp(inf->college,depa)==0)
{
p=inf;
for(int i=0;i<number;i++)
{
p=p->next;
}
cout<<p->name<<' '<<p->family<<' '<<p->ID<<' '<<p->ave<<' '<<p->college<<endl;
break;
}
}
return true;
}
}
int main()
{
char name[15];
char family[15];
char college[10];
float ave;
int ID;
int in=0;
while(in!=6)
{
cin>>in;
if(in==1)
{
cin>>name;
cin>>family;
cin>>ID;
cin>>ave;
cin>>college;
if(strcmp(college,"COMP")==0)
conter_comp++;
if(strcmp(college,"MACH")==0)
conter_mach++;
_input(name,family,ID,ave,college);
}
if(in==2)
{
char dep[4];
int number;
cin>>dep;
cin>>number;
print_n_college(dep,number);
}
}
return 0;
}