Đề bài:
1. Tạo cấu trúc để lưu thông tin Thí sinh gồm: SBD kiểu số nguyên, Họ tên kiểu chuỗi, Điểm thi môn 1 và điểm thi môn 2 là kiểu số thực.
2. Viêt hàm nhập danh sách thí sinh, kết quả trả về của hàm là số lượng thí sinh được nhập
3. Viết thủ tục in danh sách n thí sinh đầu tiên
4. Viết thủ tục sắp xếp thí sinh theo điểm tổng giảm dần. Biết điểm tổng = (Điểm 1 + Điểm 2) / 2
5. Viết hàm main demo các hàm, thủ tục đã viết ở trên.
Video nhập dữ liệu thí sinh để kiểm tra
Bài giải
1. Tạo cấu trúc để lưu thông tin Thí sinh gồm: SBD kiểu số nguyên, Họ tên kiểu chuỗi, Điểm thi môn 1 và điểm thi môn 2 là kiểu số thực.
2. Viêt hàm nhập danh sách thí sinh, kết quả trả về của hàm là số lượng thí sinh được nhập
3. Viết thủ tục in danh sách n thí sinh đầu tiên
4. Viết thủ tục sắp xếp thí sinh theo điểm tổng giảm dần. Biết điểm tổng = (Điểm 1 + Điểm 2) / 2
5. Viết hàm main demo các hàm, thủ tục đã viết ở trên.
Video nhập dữ liệu thí sinh để kiểm tra
Bài giải
#include <stdio.h>
#include <string.h>
struct ThiSinh{
int SBD;
char HoTen[50];
float d1,d2;
};
int NhapThiSinh(ThiSinh *&dsts){
int n;
printf("Co bao nhieu thi sinh? ");
scanf("%d",&n);
dsts=new ThiSinh[n];
for(int i=0;i<n;i++){
printf("Thi sinh thu %d:\n",i+1);
printf("- Nhap SBD: ");
scanf("%d",&dsts[i].SBD);
fflush(stdin);
printf("- Nhap Ho ten: ");
gets(dsts[i].HoTen);
printf("- Nhap Diem 1, 2 (cach nhau boi dau ,): ");
scanf("%f,%f",&dsts[i].d1,&dsts[i].d2);
}
return n;
}
void inDanhSach(ThiSinh *dsts,int n){
for(int i=0;i<n;i++){
printf("%-8d",dsts[i].SBD);
printf("%-30s",dsts[i].HoTen);
printf("%-10g",dsts[i].d1);
printf("%-10g",dsts[i].d2);
float kq=(dsts[i].d1+dsts[i].d2)/2.0;
printf("%-.2f",kq);
if (kq>=5)
printf(" Dau");
else
printf(" Rot");
printf("\n");
}
}
void HoanDoi(ThiSinh &a,ThiSinh &b){
ThiSinh t = a;
a=b;
b=t;
}
void SapXep(ThiSinh *dsts,int n){
for(int i=0;i<n-1;i++){
float kq1=(dsts[i].d1+dsts[i].d2)/2.0;
for(int j=0;j<n;j++){
float kq2=(dsts[j].d1+dsts[j].d2)/2.0;
if (kq1>kq2){
HoanDoi(dsts[i],dsts[j]);
}
}
}
}
int main(){
ThiSinh *dsts;
int slg = NhapThiSinh(dsts);
printf("Danh sach thi sinh:\n");
inDanhSach(dsts,slg);
printf("\n\nTOP 3 thi sinh diem cao nhat:\n");
SapXep(dsts,slg);
inDanhSach(dsts,3);
return 0;
}