PDA

View Full Version : Giúp với bài tập C++


harrythai
01-03-2011, 07:31 PM
đứa bạn nó đưa cho cái bài này bảo sửa hộ mà mình học lâu oy nên quên , bác nào giúp em !

#include <stdio.h>
#include <conio.h> //T
#include <stdib.h>
#include <string.h>
#include <math.h>

//Khai bao cac cau truc lien quan:

typedef struct Time
{
int day,month,year;
}Time;

typedef struct Mark
{
int toan,ly,hoa;
}Mark;

typedef struct SinhVien
{
char name[50],adress[50],school[50];
int birthday,pass,tong;
Time time;
Mark mark;
}SinhVien;

//Khai bao cac ham can thiet:

void nhap(int *sv,SinhVien *mang);

void hienthi(int sv,SinhVien mang[]);

void sapxeptang(int sv,SinhVien *mang);

void sapxepgiam(int sv,SinhVien *mang);

void timkiem(int sv,SinhVien mang[]);

void daomang(int sv,SinhVien *mang);

void save(int sv,SinhVien *mang);

void read();

//Menu & dau ra cho cac ham:

void main()
{
int chon,ssv;//khai bao 'chon' vi switch,ssv vi ta co *sv <> Ko can.
SinhVien a[50];
while(1)
{
clrscr();
printf("\n1.Nhap\n2.Hien thi\n3.Sap xep A->Z\n4.Sap xep N->1\n5.Tim kiem\n6.Dao mang\n7.Luu\n8.Doc\n9.Thoat\n\tChon(1->9):");
scanf("%d",&chon);
switch(chon)
{
case 1:
nhap(&ssv, a);
break;
case 2:
hienthi(ssx,a);
getch();
break;
case 3:
sapxeptang(ssv,a);
getch();
break;
case 4:
sapxepgiam(ssv,a);
getch();
break;
case 5:
timkiem(ssv,a);
getch();
break;
case 6:
daomang(ssv,a);
getch();
break;
case 7:
save(ssv,a);
getch();
break;
case 8:
read();
getch();
break;
case 9:
exit(0);

}
}
}


void nhap(int *sv,SinhVien *mang)
{
//int i;//Buoc nay co the cho int vao for(int i..;i..;i..)
printf("\nNhap so luong sinh vien du thi:");
scanf("%d",sv); //cu o trong ham nhap() thi phai *sv.
printf("\nBan hay cap nhat thong tin cua %d sinh vien nay.",*sv);
for(int i=0;i<*sv;i++)//Nho buoc nay i<*sv con ve sau thi i<sv.
{
printf("\nThong tin cua thi sinh thu %d:",i+1);
printf("\nName:");
ffiush(stdin);
gets(mang[i].name);
printf("\nAdress:");
gets(mang[i].adress);
printf("\nBirthday(dd/mm/yyyy):");
scanf("%d %d %d",&mang[i].time.day,&mang[i].time.month,&mang[i].time.year);
printf("\nSchool:");
fflush(stdin);
gets(mang[i].school);
printf("\nPass:");
scanf("%d",&mang[i].pass);
printf("\nNhap diem thi cua thi sinh\n\nDiem toan:");
scanf("%d",&mang[i].mark.toan);
printf("\nDiem Ly:");
scanf("%d",&mang[i].mark.ly);
printf("\nDiem Hoa:");
scanf("%d",&mang[i].mark.hoa);
mang[i].tong=(mang[i].mark.toan+mang[i].mark.ly+mang[i].mark.hoa);
}
}

void hienthi(int sv,SinhVien mang[])
{
printf("\nDay la thong tin cua %d sinh vien sau khi cap nhat:",sv);
for(int i=0;i<sv;i++)
printf("\nThong tin cua sinh vien %d:\n\nFull name:%s\tAdress:%s\tBirthday:%d/%d/%d\nSchool:%s\tStudent number:%d\nDiem thi:\tToan:%d\tLy:%d\tHoa:%d\t\tTotal:%d",i+1,mang[i].name,mang[i].adress,mang[i].time.day,mang[i].time.month,mang[i].time.year,mang[i].school,mang[i].pass,mang[i].mark.toan,mang[i].mark.ly,mang[i].mark.hoa,mang[i].tong);
}
//Sap xep tang dan theo ten: A->Z
void sapxeptang(int sv,SinhVien *mang)
{
SinhVien trunggian;
for(int i=0;i<sv;i++)
for(int j=sv+1;j>i;j--)
if(strcmp(mang[j-1].name,mang[j].name)>0)//so sanh .'>0' tang,'<0' giam.
{
trunggian=mang[j];
mang[j]=mang[j-1];
mang[j-1]=trunggian;
}
printf("\nThong tin cua %d sinh vien sau khi sap xep la:",sv);
hienthi(sv,mang);
}
//Sap xep giam dan theo total diem: N->1
void sapxepgiam(int sv,SinhVien *mang)
{
SinhVien trunggian;
for(int i=0;i<sv;i++)
for(int j=sv-1;j>i;j--)
if(mang[j-1].tong<mang[j].tong)
{
trunggian=mang[j];
mang[j]=mang[j-1];
mang[j-1]=trunggian;
}
printf("\nBang Xep Hang:");
hienthi(sv,mang);

}

void timkiem(int sv,SinhVien mang[])
{
int flag=0;
char sv_cantim[50];
printf("\nNhap ten sinh vien ban can tim:");
fflush(stdin);
gets(sv_cantim);
for(int i=0;i<sv;i++)
if(strcmp(mang[i].name,sv_cantim)==0)
{
flag=1;
break;
}
if(flag==0)
printf("\nThi sinh %s khong tham du ky thi.",sv_cantim);
else
{
for(int i=0;i<sv;i++)
{
if(strcmp(mang[i].name,sv_cantim)==0)
printf("\nTim thay thi sinh %s\tThong tin day du :\n\nFull name:%s\tAdress:%s\tBirthday:%d/%d/%d\nSchool:%s\tStudent number:%d\nDiem thi:\tToan:%d\tLy:%d\tHoa:%d\t\tTotal:%d",sv_cantim,mang[i].name,mang[i].adress,mang[i].time.day,mang[i].time.month,mang[i].time.year,mang[i].school,mang[i].pass,mang[i].mark.toan,mang[i].mark.ly,mang[i].mark.hoa,mang[i].tong);
}
}


}


void daomang(int sv,SinhVien *mang)
{
int i;
SinhVien tg;
for(i=0;i<sv/2;i++)
{
tg=mang[i];
mang[i]=mang[sv-i==1];
mang[sv-i==1]=tg;

}
hienthi(sv,mang);
}

void save(int sv,SinhVien *mang)
{
FILE *f;
f=fopen("SinhVien.txt","w");
if(f==NULL)
{
printf("\nKhong the tao duoc file");
getch();
return;
}
for(int i=0;i<sv;i++)
fwrite((mang+i),sizeof(SinhVien),1,f);
printf("\nSave file success");
fclose(f);
getch();
}
void read()
{
FILE *f;
SinhVien tg;//cai gi cung duoc.
f=fopen("SinhVien.txt","r");
if(f==NULL)
{
printf("\nKhong the mo duoc file");
getch();
return;
}
int i=1;

while(fread(&tg,sizeof(SinhVien),1,f)==1)
printf("\nThong tin cua sinh vien %d:\n\nFull name:%s\tAdress:%s\tBirthday:%d/%d/%d\nSchool:%s\tStudent number:%d\nDiem thi:\tToan:%d\tLy:%d\tHoa:%d\t\tTotal:%d",i+1,tg.name,tg.adress,tg.time.day,tg.time.month,t g.time.year,tg.school,tg.pass,tg.mark.toan,tg.mark .ly,tg.mark.hoa,tg.tong);
fclose(f);
getch();
}






@};-