anh ơi giúp em sửa cái này dc chương trình lỗi ở voil main()
mà em không sao sửa dc
C Code:
#include"conio.h" #include"stdio.h" #include"ctype.h" typedef struct sv { char ht[35]; char gt[10]; char qq[20]; float d; }; typedef struct ds { sv info; ds*next; } ds; ds *taonut() { ds *p=new ds(); float tg; p->next=NULL; return p; } ds *nhap(ds*l) { char ch; int i=1; ds*q,*p; l=new ds(); l->next=l; do { p=taonut(); p->next=l; if(l->next==l) l->next=p; else q->next=p; q=p; return l; } void ht(ds*l) { ds *p=l->next; int i=1; while(p!=l) { p=p->next; i++; } } //Dua ra nhung sinh vien co diem trung binh lon nhat void diemln(ds *l) { ds *p=l->next; float max=0; while(p!=l) { if(max < p->info.d) max=p->info.d; p=p->next; } //Khi thoat khoi vong while ben tren p=l p=p->next; while(p!=l) { if(p->info.d ==max) p=p->next; } } //Sap xep danh sach sinh vien theo thu tu tang dan cua diem trung binh ds *sxdiemtd(ds *l) { sv tg; ds *p=l->next; while(p!=l) { ds *q=p->next; while(q!=l) { if(p->info.d > q->info.d) { tg=p->info; p->info=q->info; q->info=tg; } q=q->next; } p=p->next; } return l; } //bo sung mot nut p vao dau danh sach l ds *bsdau(ds *l, ds *p) { p->next=l->next; l->next=p; return l; } //Bo sung mot nut p vao cuoi danh sach l ds *bscuoi(ds *l,ds *p) { ds *q=l->next; while(q->next!=l) q=q->next; p->next=l; q->next=p; return l; } //Chen mot nut p vao vi tri thu k trong danh sach co HEAD la l ds *chen(ds *l,ds *p,int k) { int d=0; ds *q=l; //Tim den nut truoc nut thu k, tuc la tim den nut thu (k-1) while(q->next!=l&&d<k-1) { d++; q=q->next; } if(q->next==l || k<=0) { return l; } else { p->next=q->next; q->next=p; } return l; } //Xoa nut dau danh sach ds *delfirst(ds *l) { if(l->next==l) return l; ds *p=l->next; l->next=p->next; delete p; return l; } //Xoa nhung sinh vien co diem trung binh <5 ds *xoaduoitb(ds *l) { if(l->next==l) return l; ds *q=l,*p=l->next; while(p!=l) { if(p->info.d <5) { ds *t=p; q->next=p=p->next; delete t; } else { q=p; p=p->next; } } return l; } /*Tach danh sach l thanh 2 danh sach: 1 danh sach gom nhung sinh vien co diem >5, 1 danh sach gom nhung sinh vien co diem <=5 */ ds *tach(ds *l,ds*HEAD) { HEAD->next=HEAD; ds *q=l,*p=l->next; while(p!=l) { if(p->info.d <=5) { ds *c,*t=p; q->next=p=p->next; if(HEAD->next==HEAD) HEAD->next=t; else c->next=t; c=t; c->next=HEAD; } else { q=p; p=p->next; } } return l; } /*ghep 2 danh sach thanh 1 danh sach. Ket qua cho ra chi 1 danh sach_la danh sach duoc liet ke truoc trong thu tu tham so cua ham, danh sach kia chi con lai nut dau_cung phai bi thu hoi khong gian nho*/ ds *gheptruoc(ds *HEAD,ds*l) { if(l->next==l) { delete l; return HEAD; } ds *p=l,*q=HEAD; while(p->next!=l) p=p->next; while(q->next!=HEAD) q=q->next; q->next=l->next; p->next=HEAD; delete l; return HEAD; } void main() { clrscr(); ds *l; l=nhap(l); ht(l); diemln(l); l=sxdiemtd(l); ht(l); int k; ds*p=taonut(); l=chen(l,p,k); ht(l); l=delfirst(l); ht(l); l=xoaduoitb(l); ht(l); ds *L; tach(l,L); else ht(l); else ht(L); L=gheptruoc(L,l); ht(L); getch(); } int menu() { int n; do { }while(n<0||n>7); return n; } void main() { clrscr(); ds *l; int chucnang; do { chucnang=menu(); switch(chucnang) { case 0: exit(1); case 1: l=nhap(l); ht(l); clrscr(); break; case 2: diemln(l); getch(); clrscr(); break; case 3: l=sxdiemtd(l); ht(l); getch(); clrscr(); break; case 4: int k; ds*p=taonut(); l=chen(l,p,k); ht(l); getch(); clrscr(); break; case 5: l=delfirst(l); ht(l); getch(); clrscr(); break; case 6: l=xoaduoitb(l); ht(l); getch(); clrscr(); break; case 7: ds *L; tach(l,L); else ht(l); else ht(L); L=gheptruoc(L,l); ht(L); getch(); clrscr(); break; } }while(chucnang!=0); }