Thầy em cho bài tập quản lý sinh viên bằng mảng 1 chiều, nhưng khi em sắp xếp theo điểm hay theo tên thì giá trị lại không như nhau. Ví dụ như nhập A = 8đ, B=9đ sau khi sắp xếp thì giảm dần nhưng A = 9, B = 8. các bác xem giúp em.
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
void textcolor(int x)
{
HANDLE mau;
mau = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(mau,x);
}
char ten[100][50];
int tuoi[100];
float diem[10];
void Nhapds(int n){
for(int i=0;i<n;i++){
fflush(stdin);
printf("Ten sinh vien : ");
gets(ten[i]);
fflush(stdin);
printf("Tuoi : ");
scanf("%d",&tuoi[i]);
printf("Diem : ");
scanf("%f",&diem[i]);
}
fflush(stdin);
}
void Xuat(int n){
printf("---------------------------------------\n");
printf("| %20s | %5s | %5s|\n","Ho va ten ","Tuoi","Diem");
printf("---------------------------------------");
for(int i=0;i<n;i++){
printf("\n| %20s | %5d | %5.2f|",ten[i],tuoi[i],diem[i]);
}
}
void Sapxepdiem( int n){
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(diem[i]<diem[j]){
float temp = diem[i];
diem[i] = diem[j];
diem[j] = temp;
}
}
}
printf("DANH SACH SINH VIEN THEO DIEM TB\n");
printf("---------------------------------------\n");
printf("| %20s | %5s | %5s|\n","Ho va ten ","Tuoi","Diem");
printf("---------------------------------------");
for(int i=0;i<n;i++){
printf("\n| %20s | %5d | %5.2f|",ten[i],tuoi[i],diem[i]);
}
}
void Sapxepten(int n){
char temp[100];
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++)
{
if(stricmp(ten[i],ten[j])>0)
{
strcpy(temp,ten[i]);
strcpy(ten[i],ten[j]);
strcpy(ten[j],temp);
}
}
}
printf("\nDANH SACH SINH VIEN THEO TEN\n");
Xuat(n);
}
void Tim(int n){
char find[100];
int flag =0;
printf("\nNhap MSSV can tim : ");
gets(find);
for(int i =0 ;i<n;i++){
if(stricmp(find,ten[i])==0){
printf("---------------------------------------\n");
printf("| %20s | %5s | %5s|\n","Ho va ten ","Tuoi","Diem");
printf("---------------------------------------");
printf("\n| %20s | %5d | %5.2f|",ten[i],tuoi[i],diem[i]);
flag = 1;
}
}
if(flag == 0){
printf("\nKhong co sinh vien can tim");
}
}
main(){
int n;
char ten[100][50];
int tuoi;
float diem;
printf("Nhap so sinh vien : ");
scanf("%d",&n);
Nhapds(n);
Sapxepdiem(n);
Sapxepten(n);
Tim(n);
}