Viết chương trình thực hiện những yêu cầu sau:
a. Nhập mảng một chiều các lớp học (LOPHOC). Biết rằng một lớp học gồm những thành phần như sau:
- Tên lớp: chuỗi tối đa 30 ký tự.
- Sĩ số: kiểu số nguyên 2 byte.
- Danh sách các học sinh trong lớp ( tối đa 50 học sinh).
b. Xuất mảng.
c. Tìm một lớp có sỉ số đông nhất.
d. Tìm một học sinh có điểm trung bình lớn nhất
Hi mọi người, mình tới câu d chưa nghĩ ra hướng giải quyết, nhờ mọi người góp ý với ạ.
Thank all
#include"stdio.h"
#include"conio.h"
#define size 40
struct HOCSINH
{
char hoten[30];
float toan;
float van;
float trungbinh;
};
struct LOPHOC
{
char ten[30];
int siso;
HOCSINH hs[size];
};
void Nhap_1_HS(HOCSINH* hs)
{
printf("Ho ten: ");
while (getchar() != '\n');
gets_s(hs->hoten);
printf("Diem mon Toan: ");
scanf_s("%f", &hs->toan);
printf("Diem mon Van: ");
scanf_s("%f", &hs->van);
}
void Xuat_1_HS(HOCSINH hs)
{
puts(hs.hoten);
printf("Diem Toan: ");
printf("%.2f\n", hs.toan);
printf("Diem Van: ");
printf("%.2f\n", hs.van);
printf("Diem trung binh: ");
hs.trungbinh = (float)(hs.van + hs.toan) / 2;
printf("%.2f", hs.trungbinh);
printf("\n\n");
}
void Nhap_1_lop_hoc(LOPHOC* lop)
{
while (getchar() != '\n');
printf("Ten lop: ");
gets_s(lop->ten);
do
{
printf("Si so: ");
scanf_s("%d", &lop->siso);
} while (lop->siso < 1 || lop->siso > size);
for (int i = 0; i < lop->siso; i++)
{
Nhap_1_HS(&lop->hs[i]);
}
}
void Xuat_1_lop_hoc(LOPHOC lop)
{
printf("\nlop: ");
puts(lop.ten);
printf("Si so: %d", lop.siso);
printf("\nDanh sach:\n");
for (int i = 0; i < lop.siso; i++)
{
Xuat_1_HS(lop.hs[i]);
}
}
void Nhap_DS_lop(LOPHOC lop[], int* n)
{
do
{
printf("Nhap so luong lop hoc: ");
scanf_s("%d", n);
}
while (*n < 1 || *n > size);
for (int i = 0; i < *n; i++)
{
Nhap_1_lop_hoc(&lop[i]);
}
}
void Xuat_DS_lop(LOPHOC lop[], int n)
{
for (int i = 0; i < n; i++)
{
Xuat_1_lop_hoc(lop[i]);
}
}
//Tim lop co si so dong nhat
void Siso_max(LOPHOC lop[], int n)
{
int max = lop[0].siso;
int vt = 0;
for(int i = 0; i < n; i++)
{
if (lop[i].siso > max)
{
max = lop[i].siso;
vt = i;
}
}
printf("Lop: ");
puts(lop[vt].ten);
printf("Si so: %d", lop[vt].siso);
}
void main()
{
LOPHOC lop[size];
int n;
HOCSINH hs[size];
Nhap_DS_lop(lop, &n);
Xuat_DS_lop(lop, n);
printf("Lop co si so dong nhat:\n");
Siso_max(lop, n);
}