Xin chào mọi người,
Như tiêu đề, mong mọi người giúp em, em vẫn không hiểu sao:
- Nó không trừ đi giới hạn của nó lúc xóa mặc dù đã n–
- Thêm vào thì không tăng giới hạn lên
Nhân tiện mọi người giúp em format cho đẹp với ạ, em cảm ơn mọi người.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
int stt;
char mssv[10];
char hoten[25];
float dlt,dt1,dt2,dvl,dav,dtb;
char xl[15];
}sv;
typedef struct{
char mm[10];
char tenmon[25];
int tinchi;
float diem;
}mh;
void nhap(sv a[],mh b[],int *n){
printf("BAN HAY NHAP DU LIEU CHO 5 MON HOC:\n");
for(int i=0;i<5;i++){
printf("NHAP TEN MON %i ",i+1);fflush(stdin);gets(b[i].tenmon);
printf("NHAP MA MON ");fflush(stdin);gets(b[i].mm);
printf("NHAP SO TIN CHI ");scanf("%i",&b[i].tinchi);
i++;
printf("\nNHAP TEN MON %i ",i+1);fflush(stdin);gets(b[i].tenmon);
printf("NHAP MA MON ");fflush(stdin);gets(b[i].mm);
printf("NHAP SO TIN CHI ");scanf("%i",&b[i].tinchi);
i++;
printf("\nNHAP TEN MON %i ",i+1);fflush(stdin);gets(b[i].tenmon);
printf("NHAP MA MON ");fflush(stdin);gets(b[i].mm);
printf("NHAP SO TIN CHI ");scanf("%i",&b[i].tinchi);
i++;
printf("\nNHAP TEN MON %i ",i+1);fflush(stdin);gets(b[i].tenmon);
printf("NHAP MA MON ");fflush(stdin);gets(b[i].mm);
printf("NHAP SO TIN CHI ");scanf("%i",&b[i].tinchi);
i++;
printf("\nNHAP TEN MON %i ",i+1);fflush(stdin);gets(b[i].tenmon);
printf("NHAP MA MON ");fflush(stdin);gets(b[i].mm);
printf("NHAP SO TIN CHI ");scanf("%i",&b[i].tinchi);
}
printf("BAN CAN NHAP BAO NHIEU SINH VIEN ?\n\t");scanf("%i",&(*n));
for(int i=0;i<*n;i++){
printf("\nNHAP SO THU TU CHO SINH VIEN ");scanf("%i",&a[i].stt);
printf("NHAP MSSV ");fflush(stdin);gets(a[i].mssv);
printf("NHAP HO & TEN ");fflush(stdin);gets(a[i].hoten);
printf("NHAP DIEM %s ",b[0].tenmon);scanf("%f",&a[i].dlt);
printf("NHAP DIEM %s ",b[1].tenmon);scanf("%f",&a[i].dt1);
printf("NHAP DIEM %s ",b[2].tenmon);scanf("%f",&a[i].dt2);
printf("NHAP DIEM %s ",b[3].tenmon);scanf("%f",&a[i].dvl);
printf("NHAP DIEM %s ",b[4].tenmon);scanf("%f",&a[i].dav);
}
}
void xuly(sv a[],mh b[],int n){
for(int i=0;i<n;i++){
float s=(a[i].dlt*b[0].tinchi+a[i].dt1*b[1].tinchi+a[i].dt2*b[2].tinchi+a[i].dvl*b[3].tinchi+a[i].dav*b[4].tinchi);
int s1=(b[0].tinchi+b[1].tinchi+b[2].tinchi+b[3].tinchi+b[4].tinchi);
a[i].dtb=s/s1;
if(a[i].dtb>=9) strcpy(a[i].xl,"XUAT SAC");
else if(a[i].dtb>=8) strcpy(a[i].xl,"LOAI GIOI");
else if(a[i].dtb>=6.5) strcpy(a[i].xl,"LOAI KHA");
else if(a[i].dtb>=5) strcpy(a[i].xl,"LOAI TB");
else strcpy(a[i].xl,"LOAI YEU");
}
}
void xuat(sv a[],mh b[],int *n){
for(int i=0;i<*n;i++){
for(int j=0;j<5;){
printf("%-5i%-10s%-25s:\n",a[i].stt,a[i].mssv,a[i].hoten);
printf("%-25s%-5.2f",b[j].tenmon,a[i].dlt);j++;
printf("%-25s%-5.2f",b[j].tenmon,a[i].dt1);j++;
printf("%-25s%-5.2f",b[j].tenmon,a[i].dt2);j++;
printf("%-25s%-5.2f",b[j].tenmon,a[i].dvl);j++;
printf("%-25s%-5.2f\nDIEM TB: %-5.2f%-15s\n",b[j].tenmon,a[i].dav,a[i].dtb,a[i].xl);j++;
}
printf("\n");
}
}
void nhapsvn(sv *a, mh b[], int n){
a=(sv*)malloc(n*sizeof(sv));
int add;
printf("BAN MUON NHAP THEM BAO NHIEU SINH VIEN ?\n\t");scanf("%i",&add);
a=(sv*)realloc(a,n+add);
for(int i=n;i<(n+add);i++){
printf("\nNHAP SO THU TU CHO SINH VIEN ");scanf("%i",&(a+i)->stt);
printf("NHAP MSSV ");fflush(stdin);gets((a+i)->mssv);
printf("NHAP HO & TEN ");fflush(stdin);gets((a+i)->hoten);
printf("NHAP DIEM %s ",b[0].tenmon);scanf("%f",&(a+i)->dlt);
printf("NHAP DIEM %s ",b[1].tenmon);scanf("%f",&(a+i)->dt1);
printf("NHAP DIEM %s ",b[2].tenmon);scanf("%f",&(a+i)->dt2);
printf("NHAP DIEM %s ",b[3].tenmon);scanf("%f",&(a+i)->dvl);
printf("NHAP DIEM %s ",b[4].tenmon);scanf("%f",&(a+i)->dav);
}
n = n + add;
}
void xoasv(sv a[],mh b[],int *n){
char z[10];
fflush(stdin);gets(z);
for(int i=0;i<*n;i++){
if(stricmp(a[i].mssv,z)==0){
for (int j = i; j<*n;j++){
*(a+j) = *(a+j+1);
i--;
}
*n--;
}
}
}
int main(){
sv a[30];
mh b[5];
int n;
printf(" CHUONG TRINH QUAN LY SINH VIEN\n");
nhap(a,b,&n);
xuly(a,b,n);
printf("\nDANH SACH SINH VIEN BAN VUA NHAP\n");
xuat(a,b,&n);
printf("\n***********************************************************");
printf("\n** NHAP 1 TIM SINH VIEN BAN MUON **");
printf("\n** NHAP 2 XEM SINH VIEN CO DIEM TB CAO NHAT **");
printf("\n** NHAP 3 LIET KE XEP LOAI SINH VIEN **");
printf("\n** NHAP 4 THEM SINH VIEN **");
printf("\n** NHAP 5 XOA SINH VIEN BAN MUON **");
printf("\n** NHAP 6 SAP XEP SINH VIEN THEO DIEM TRUNG BINH **");
printf("\n** NHAP 7 SAP XEP SINH VIEN THEO TEN **");
printf("\n** NHAP 8 XUAT DANH SACH SINH VIEN VUA NHAP RA FILE **");
// printf("\n** NHAP 9 DOC DANH SACH SINH VIEN TU FILE **");
printf("\n***********************************************************\n");
int c;
printf(" NHAP LUA CHON CUA BAN :\t");scanf("%i",&c);
switch(c){
case 4:
nhapsvn(a,b,n);
xuat(a,b,&n);
break;
case 5:
printf("NHAP MSSV CUA SV CAN XOA:\t");
xoasv(a,b,&n);
printf("\n%d\n",n);
xuat(a,b,&n);
break;
}
printf("KET THUC CHUONG TRINH");
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?