Em có một mảng cấu trúc như ntn, dù thuật toán sắp xếp đã đúng như k hiểu sao lại k thực hiện sắp xếp.
mặc dùng dùng như thế này ở bài khác lại chạy đc. mong mọi người giúp với
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
struct ngaysinh{
int Ngay , Thang, Nam;
};
struct sinhvien {
int MaSV;
char TenLop[10];
char HoTen[30];
float Diem;
ngaysinh NS;//nam sinh
};
void nhap(sinhvien sv[], int &n){
printf("Nhap so luong sinh vien:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("Nhap ma sinh vien: "); fflush(stdin); scanf("%d",&sv[i].MaSV );
printf("Nhap ten lop: ");fflush(stdin); gets(sv[i].TenLop);
printf("Nhap ho ten sinh vien: "); fflush(stdin); gets(sv[i].HoTen);
printf("Nhap ngay sinh: \n\tNgay: ");scanf("%d",&sv[i].NS.Ngay);
printf("\tThang: "); scanf("%d",&sv[i].NS.Thang);
printf("\tNam: "); scanf("%d",&sv[i].NS.Nam);
printf("Nhap diem tb"); fflush(stdin);scanf("%f",&sv[i].Diem);
}
}
void print(sinhvien sv[], int n){
for(int i=0;i<n;i++){
printf("\n=======================");
printf("\nma sinh vien: %d", sv[i].MaSV );
printf("\nten lop: %s",sv[i].TenLop);
printf("\nsinh vien: %s",sv[i].HoTen);
printf("\nngay sinh: %d/%d/%d ",sv[i].NS.Ngay,sv[i].NS.Thang,sv[i].NS.Nam);
printf("\ndiem tb: %f",sv[i].Diem);
}
}
void selectionSort (int a[], int n){
for(int i=0;i<n-1;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(a[j]<a[min]){
min=j;
}
if(min!=i){
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
}
void swap (sinhvien x, sinhvien y){
sinhvien temp = x;
x=y;
y=temp;
}
void sortMaSinhVien(sinhvien sv[], int n){
for(int i=0;i<n-1;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(sv[i].MaSV<sv[min].MaSV){
min=j;
}
if(min!=i){
swap(sv[i],sv[min]);
}
}
}
}
int main(){
sinhvien sv[100];
int n;
nhap(sv,n);
sortMaSinhVien(sv,n);
print(sv,n);
}