
Nguyên bản được gửi bởi
dragoncl12
à là như vầy: nhập vào danh sách n sinhviên: tên,họ,ngàysinh,điểm,giới tính và in ra danh sách sinhviên,sau đó in ra sinh viên nào có số điểm(vidụ: 9) cao nhất và xếp hạng sinh viên đứng 1,2,3...

Hi, có lẽ bài này bạn dùng mảng có kiểu cấu trúc, theo như đề bài thì bạn có cấu trúc sau:
Code:
struct HoSo
{
char ten[15];
char ho[10];
NgayThang ngaysinh; //ngaysinh có kiểu cấu trúc ngày,tháng,năm
float diem;
int gioitinh; //1 là nam,0 là nữ
}
Nhưng vì bạn cần xếp hạng học sinh,nên mình nghĩ bạn nên thêm 1 thuộc tính hang (kiểu int) trong cấu trúc nêu trên. Lưu ý: lúc cho nhập hồ sơ của n sinh viên, bạn không cần phải nhập hạng.
Sau khi đã nhập đầy đủ hồ sơ rồi, bạn tiến hành sắp xếp lại mảng cấu trúc theo thứ tự giảm dần (hoặc tăng dần tùy bạn).
Giả sử mình có mảng cấu trúc: HoSo hs[100]; và dùng Bubble Sort để sắp xếp mảng này theo thứ tự tăng dựa trên chỉ số so sánh là thuộc tính diem
Code:
for(int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
if (hs[i].diem<hs[j].diem) HoanVi(hs[i].diem,hs[j].diem);
Hê, bây giờ bạn thừa biết như thế nào rồi đó, phần tử đầu tiên của mảng chứa học sinh có điểm số cao nhất ^ ^
Ok,xong bước 1,bây giờ tới vụ xếp hạng, bạn chỉ cần dùng vòng lặp là ra được hạng của học sinh
Code:
for(int i=0;i<n;i++)
hs[i].hang=i+1;
Bây giờ, công việc còn lại của bạn là in ra màn hình thôi, cái này thì bạn tự lo nhé, tất nhiên là bạn có thể cải tiến chương trình của bạn hơn những gì mình đã nói.