bài tập cho danh sách liên kết lưu thông tin sinh viên và một số bài tập xữ lí
#include "stdio.h"
#include "conio.h"
#include "string.h"
/*
Bài 5. H? tên. N?m sinh gi?i tính. ?i?m trung bình
- S?p x?p gi?m theo ?i?m
- Xu?t danh sách theo v? th?
*/
struct sv
{
char hten[40];
int ns;
int sex; // 1 la nam - 2 la nu
float diem;
};
struct node
{
sv x;
node *link;
};
/*
void insert(node *&f,node *p,int i)
{
node *q=new node;
printf("\n\t Nhap thong tin sv %d",i);
printf("\n\t\t Ho & Ten : \t"); scanf("%s",&q->x.hten);
printf("\n\t\t Nam sinh : \t"); scanf("%d",&q->x.ns);
printf("\n\t\t Gioi tinh [1] Nam || [2] Nu : \t"); scanf("%d",&q->x.sex);
printf("\n\t\t Diem TB : \t"); scanf("%f",&q->x.diem);
q->link=NULL;
if(f==p) f=q;
else
{
node *r=f;
while(r->link!=p) r=r->link;
r->link=q;
q->link=p;
}
}*/
void insert(node *&f,node *p,sv a)
{
node *q=new node;
/*strcpy(q->x.hten,x.hten);
q->x.ns=x.ns;
q->x.sex=x.sex;
q->x.diem=x.diem;*/
q->x = a;
q->link=p;
if(f==p) f=q;
else
{
node *r=f;
while(r->link!=p) r=r->link;
r->link=q;
}
}
void taods(node *&f)
{
FILE *fi;
fi=fopen("a.txt","rt");
if(fi==NULL) return;
sv x;
int i=0;
while(feof(fi)==0)
{ // fflush(fi);
fgets(x.hten,40,fi);
if(strcmp(x.hten,"")!=0){
fscanf(fi,"%d",&x.ns);
i++;
fscanf(fi,"%d",&x.sex);
fscanf(fi,"%f",&x.diem);
printf("\n i=%d %s\t\t %d \t\t %d \t\t\t %f",i, x.hten,x.ns,x.sex,x.diem);}
//fscanf(fi,"%s");
//insert(f,NULL,x);
// std::flush();
}
fclose(fi);
}
void inds(node *f)
{
printf("\n Ho & Ten : \t");
printf(" Nam sinh : \t");
printf("[1]Nam [2]Nu : \t");
printf("Diem TB");
while(f!=NULL)
{
printf("\n %s\t\t %d \t\t %d \t\t\t %f",f->x.hten,f->x.ns,f->x.sex,f->x.diem);
f=f->link;
}
}
void diemtb(node *f)
{
float diem=0;
int so=0;
if(f==NULL) { printf("\n KHONG CO SV NAO"); return ; }
else
while(f!=NULL)
{
diem=diem+f->x.diem;
so++;
f=f->link;
}
printf("\n Diem trung binh cua %d sv la %f",so,diem/(float) so);
}
void sort(node *f)
{
while(f!=NULL)
{
node *fi=f;
while(fi!=NULL)
{
if(fi->x.diem < f->x.diem)
{
sv a=f->x;
f->x=fi->x;
fi->x=a;
}
fi=fi->link;
}
f=f->link;
}
}
void vithu(node *f)
{
int v=1;
int k=1;
node *q=f;
while (f!=NULL)
{
if(f->x.diem != q->x.diem)
{
printf("\n%s -- %f --- vi thu %d",f->x.hten,f->x.diem,k);
v=k;
q=f;
}
else
{
printf("\n%s -- %f --- vi thu %d",f->x.hten,f->x.diem,v);
}
k++;
f=f->link;
}
}
int main()
{
node *f=NULL;
taods(f);
// inds(f);
// diemtb(f);
// sort(f);
//inds(f);
//vithu(f);
getch();
}