PDA

View Full Version : Sắp xếp tên (string) trong mảng



hieuga2007
16-05-2009, 02:54
Có bài tập của ông thầy cho mà ko biêt làm cách nào để xếp tên trong mảng
(chỉ biết xếp tên theo điểm số thôi. ke ke)

Đề bài:
1. nhập tên 10 học sinh.
2.sắp xếp tên học sinh theo thứ tự giảm dần.
3.in mảng
4. nhập tên học sinh bất kỳ.tìm trong mảng. nếu có tên đó thì in ra. ko có thì ko in.

Đang pó tay câu 2 và câu 4.
Mình post lên đây, mong mọi ngừoi chỉ giúp ! Cám ơn nhiều nhé !!

Thần Obelisk
16-05-2009, 21:15
sử dụng chức năng compare trong string đi bạn
vd string a,b a.compare(b) =0 thì a giống b ,>0 thì a sẽ lớn hơn b(theo thu tu a -> z)còn lại nếu <0 thì a sẽ nhỏ hơn b

hieuga2007
17-05-2009, 11:32
Cám ơn bạn đã quan tâm, nhưng mà thực sự mình vẫn chưa hiểu lắm. Bạn có thể nói rõ hơn cách dùng string compare đối với bài này đựoc ko vậy ???

vogia00
18-05-2009, 09:48
đây là hàm trong CT quản lý đội bóng của tôi ban thử tham khảo
//ham lay ten trong chuoi ho ten
char *layten(char s1[])
{
int l,k;
k=0;
l=strlen(s1);
for (int i=l;i>0;i--)
{
if (s1[i]==' ') //xác định tên dựa vào khoảng trắng
{
break;
}
}
for (int j=i+1;j<=l;j++)
{
s1[k]=s1[j];
k++;
}
return s1;
}
khi dùng hàm cần dung biến tg để lưu chuỗi rồi mới truyền vào sau khi lây tên rồi đem so sách các tên với nhau là ok

//sap xep theo ten a=>z
void sapxeptthlv(doibong a[],int n)
{
doibong tg;
char stg1[40],stg2[40];
for (int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
strcpy(stg1,a[i].tenhlv);
strcpy(stg2,a[j].tenhlv);
if (strcmpi(layten(stg1),layten(stg2))>0)
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
}
}