Em không hiểu sao bài tập này của em lại chạy bị lỗi. Em đã debug nhưng vẫn không hiểu nó bị lỗi đó là như thế nào. Các anh coi dùm em nha
PS: Vừa tìm ra lỗi nhờ thằng bạn.
PS: Vừa tìm ra lỗi nhờ thằng bạn.
Code:
#include <stdio.h> #include <conio.h> #include <iostream> #include <string> using namespace std; typedef struct ssv { char *HoTen,*GioiTinh; long NamSinh; double MSSV; float ToanA2, CTDL, KTMT, LiA2, LiA3, DBT; } sv; typedef struct SVNode { sv info; struct SVNode *SVRight, *SVLeft; } *SVTREE; void CreateSVNode(SVNode *&a, sv x) { a=new SVNode; if (a=NULL) { cout<<"Loi bo nho khong the tao cay. Tat chuong trinh va kiem tra loi cua HDD."<<endl; exit(1); } else { a->info=x; a->SVLeft=a->SVRight=NULL; } } void CreateSVTree(SVTREE &a) { a=NULL; } int AddSVNode(SVTREE &a, sv x) { if (a) { if (a->info.MSSV==x.MSSV) { cout<<"Sinh vien vua nhap da bi trung."; return 0; } if (a->info.MSSV>x.MSSV) return AddSVNode(a->SVLeft,x); else return AddSVNode(a->SVRight,x); } CreateSVNode(a,x); return 1; } void LNR(SVTREE a, int &n) { if (a!=NULL) { LNR(a->SVLeft,n); n++; cout<<"SINH VIEN THU "<<n<<endl; cout<<" Ho va ten: "<<a->info.HoTen<<endl; cout<<" MSSV: "<<a->info.MSSV<<endl; cout<<" Nam sinh: "<<a->info.NamSinh<<endl; cout<<" Gioi tinh: "<<a->info.GioiTinh<<endl; cout<<" Diem Toan A2: "<<a->info.ToanA2<<endl; cout<<" Diem Li A2: "<<a->info.LiA2<<endl; cout<<" Diem Li A3: "<<a->info.LiA3<<endl; cout<<" Diem KTMT: "<<a->info.KTMT<<endl; cout<<" Diem CTDL>: "<<a->info.CTDL<<endl; cout<<" Diem TRUNG BINH: "<<a->info.DBT<<endl; LNR(a->SVRight,n); } } void main() { cout<<"Copyright (c) 2012 - Nguyen Van Uy."<<endl<<endl<<"Welcome to Sinh Vien Tree Struct Program v1.0 "<<endl<<endl; SVTREE SVT, svtam; int n=0; sv sinhvien; sinhvien.HoTen=(char*) malloc(50*sizeof(char)); sinhvien.GioiTinh=(char*) malloc(3*sizeof(char)); char *b,c,gt; int g; b=(char*) malloc(50*sizeof(char)); CreateSVTree(SVT); CreateSVTree(svtam); cout<<"NHAP VAO THONG TIN SINH VIEN THU 1 (Nhan ESC de exit nhap): "<<endl<<endl; do { cout<<"Ho va ten: "; c=getche(); if(c==27) break; else { g=sprintf(sinhvien.HoTen,"%c",c); gets(b); strcat(sinhvien.HoTen,b); free(b); cout<<"MSSV: "; cin>>sinhvien.MSSV; cout<<"Gioi tinh (1-Nam, 0-Nu): "; do { gt=getch(); getch(); if (gt=='1') { sinhvien.GioiTinh="Nam"; cout<<"Nam"<<endl; } else if (gt=='0') { sinhvien.GioiTinh="Nu"; cout<<"Nu"<<endl; } }while(gt==0 || gt==1); cout<<"Nam sinh: ";cin>>sinhvien.NamSinh; cout<<"Diem Toan A2: ";cin>>sinhvien.ToanA2; cout<<"Diem Li A2: ";cin>>sinhvien.LiA2; cout<<"Diem Li A3: ";cin>>sinhvien.LiA3; cout<<"Diem KTMT: ";cin>>sinhvien.KTMT; cout<<"Diem CTDL>: ";cin>>sinhvien.CTDL; }; sinhvien.DBT=(sinhvien.ToanA2 + sinhvien.LiA2 + sinhvien.LiA3 + sinhvien.KTMT + sinhvien.CTDL)/5; n++; if (AddSVNode(svtam,sinhvien)==0) { //n=n-1; cout<<"Sinh vien vua nhap da bi trung. "<<endl<<"NHAP LAI THONG TIN SINH VIEN THU "<<n<<" (Nhan ESC de exit nhap): "<<endl<<endl; } else { n++; SVT=svtam; cout<<"NHAP VAO THONG TIN SINH VIEN THU "<<n<<" (Nhan ESC de exit nhap): "<<endl<<endl; } }while (1); int k=0; LNR(SVT,k); getch(); } /* sprintf example */ //#include <stdio.h> // //int main () //{ // char buffer [50]; // int n, a=5, b=3; // n=sprintf (buffer, "%d plus %d is %d", a, b, a+b); // printf ("[%s] is a %d char long string\n",buffer,n); // return 0; //}
Comment