PDA

View Full Version : sắp xếp họ tên



okmen910
24-02-2008, 11:16
em có bài tập không bit làm sao?
Viét chương trình nhập vào danh sách học sinh của 1 lớp. Sắp xếp lại danh sách theo thứ tự A,B,C của họ tên
<<thánk nhiều>>

mr_invincible
24-02-2008, 11:19
Thì cứ chia thành 2 phần họ, tên rồi sắp xếp theo tên thôi, nếu tên giống nhau thì sắp theo họ

okmen910
24-02-2008, 11:25
Thì cứ chia thành 2 phần họ, tên rồi sắp xếp theo tên thôi, nếu tên giống nhau thì sắp theo họ

Em biết như vậy rồi, nhưng em cần thuật toán cơ

mr_invincible
24-02-2008, 11:30
Không hiểu bạn thắc mắc phần nào? Nói chung thì cứ làm thế này
Có thể chia thành 2 mảng, một mảng lưu họ (+đệm), một mảng lưu tên
Hoặc có thể dùng bản ghi. Khi sắp xếp thì sắp theo tên, nếu tên bằng nhau thì mới xét đến họ

rocky_cbg
28-02-2008, 19:26
uhm, cái này mình cũng mới làm, thử góp ý chút nhé, mình thì bước đầu tiên là chuẩn hóa hết tên người đã (cho đẹp ý mà, mà còn dễ kiểm tra nữa),
rồi thì sắp xếp theo tên (bạn cứ so sánh cả tên ấy, Pascal tự so sánh xâu ký tự mà), nếu tên trùng thì mới chuyển qua so sánh tên đệm rồi họ), mình thì thấy dùng mảng xâu ký tự cũng không rắc rối lắm, mà nói thiệt cũng chưa thạo dùng bản ghi nên chẳng biết cái nào tốt hơn,
có gì mọi người cùng góp ý

mr_invincible
28-02-2008, 22:19
Làm bản ghi thuận tiện hơn vì khi đổi chỗ 2 phần tử đỡ bị nhầm hơn đó bạn. VD: khi không chỉ có tên học sinh mà còn có cả điểm các môn mà bạn dùng nhiều mảng thì việc đổi chỗ sẽ khá mệt và dễ thiếu sót

m2mpro
29-02-2008, 05:44
Dùng kiểu array of record so sánh với record :D

tuansando
02-03-2008, 10:07
cho em xin code thử đi anh

m2mpro
02-03-2008, 10:17
h:record; { Kiểu record nhé }
a:array [1..50] of record;
begin
For i:=1 to n do
with a[i] do
if a[i].ten > a[i+1].ten then
begin
h:=a[i].ten;
a[i].ten:=a[i+1].ten;
a[i+1].ten:=h;
end;
Đó. :D