(Huỳnh Thị Hồng Trang lăm băi viết ) H Ứng dụng:

Một phần của tài liệu Flash (Trang 31 - 35)

- Một thuật toân có thí được căi đặt theo nhiều câch khâc nhau, kỹ

(Huỳnh Thị Hồng Trang lăm băi viết ) H Ứng dụng:

H. Ứng dụng:

Băi toân ứng dụng giải thuật sắp xếp vă tìm kiếm

Thông tin về một sinh viín bao gôm: Mê sô — lă một sô nguyín dương, Họ vă đệm — một chuỗi có tối đa 20 ký tự, Tín sinh viín — lă một chuỗi có tối đa 10 ký tự, Ngăy, thâng, năm sinh — lă câc số nguyín đương, Phâi - Lă “Nam” hoặc “Nữ”, Điểm trung bình

— lă câc số thực có giâ trị từ 0.00 —> 10.00.

Viết chương trình lẫy danh sâch sinh viín (ít nhất lă 10 sinh viín, không nhập trùng mê giữa câc sinh viín với nhau) lưu trữ từ tập tin có tín SINHVIEN.TXT, sau đó vận dụng thuật toân sắp xếp, tìm kiếm trín file để sắp xếp danh sâch sinh viín theo thứ tự tăng dần

theo Mê sinh viín. In danh sâch sinh viín trong file SINHVIEN.TXT sau khi sắp xếp ra măn hình.

using S5ystem;

using System.Coll1ections.Generlic;

using System.Text; using System. TO; namespace ŨngDung

{

class Prcgram

{

s€atic void Main(string[] args) { 1nt loal1; String Co; DSDL a = new DSDL(); a. TaoDL () ; do { Console.WrlteLine("1.QOuickSort 2.L1ineSearch 3.BinarySearch 4.XuatDL*");

Console.Wrlite ("Nhap tac vu can thuc hlen:"); loa1l = Convert.TcTnt32 (Console.ReadLine ()); switch (loal) { case 1: a.QuickSort(0, a.layn() - 1); break; case 2: a.L1ineSearch (); break; case 3: a.QuickSort(0, a.layn() - 1); a.BinarySearch(); break; case 4: a.XuatDL (); break; Case -l1: break; def£ault:

Console.,WriteLine ("Tac vu sal"); break;

}

Console.Write ("Tiep tục hay thoat? Y/N ");

Co = Console.ReadL1ne (); } whlle (Co == "YY || Co == "y"); } whlle (Co == "YY || Co == "y"); } } class SV { 1int MS; string Ho; string Tẹn; 1nt NgaySlnh; 1nt ThangSinh;

1nt NamSinh; string Phal; double Diem;

bublic void tac(string s1) {

const char Space = '!/';

const char Comma = ',';

char[] delimiters = new char|L] { Space, Comma }; string[] tembp = new string[8];

1inE ctr = 0;

foreach (string subString 1n s1.Split(delimiters) ) {

tembp[ctr++] = subString; }

Ctr = CCr - 1;

Diem = ConverE.ToDouble (temp[ctr--]); Pha temb[ctr--];

NamSinh = ConvertE.ToTnt32 (tembp[ctr--]) ; ThangSinh = Convert.ToTnt32 (temp[ctr--]); NgaySinh = Convert.ToTnEt32 (tCemp[ctr--]); Ten = tembp[ctr--];

Ho temb [ctr—-]?

MS Convert.ToTnt32 (temp[ctr--]);?

}

bublic void xuat ()

{

Console.WriteLine(”(0,g3}{1,15})({2,10} {3,5}/{14,2}/

{5;,2})(6,11}{7,10}", MS, Ho, Ten, NgaySinh, ThangSinh, NamSinh, Pha1, Dien) ;

}

bublic int LayMS§ ()

{ return MS; return MS; } } class DSDL { Const intE n = 10; SV[LE] a = new SV[n]; bublic void TaoDL ()

{

string[] Numbers;

Numbers = new StCring[10];

StreamReader Num£lle = F1le.OpenText ("D: \\STNHVTEN.TXT") ;

for (1int 1 = 0O; 1< n; 1++)

Numbers[1l] = Numfl1le.ReadLine (); for (inE J = 0; j < n; ]j++) { alJ] = new SV(); a[7].tao (Numbers [1] ]) ; } }

bublic void XuatDL()

{

Console.WriteLine(" MS Ho § ten dem Ten Ngay sinh Pha D1em") ;

for (int J = 0; j < n; j++) {

aLlJ].xuat(); }

}

bublic int layn()

{

return n;

}

bublic vwoid QuickSort(int lef£t, int right) {

int l1, 1, %X;

x = a[(int) (left + right) / 2].LayMS§ (); i1 = left; J] = right; i1 = left; J] = right; do { while (a[l].LayMS() < x) 1++; while (a[]].LbayMS() > x) J--; 1£ (¡ <= 3) { SV tembp = a[1]; a[i]l = a[j]; a[J] tempb; 1†++; j--? } } while (1 <= ]J); 1£ (left < ]) QuickSort(l1eft, J); 1£ (1 < right) QuickSort(1, right); }

bublic inEt Tim(int x) {

for (1int 1 = 0O; 1< n; 1++) 1Ý (a[i].LayMS() == x)

return 1; return -H1;

}

bublic void LineSearch () {

1nt x;

Conscle.Write("Nhap MS can tim:");

x = Convert.ToTnt32(€onsole.ReadLine ()); 1£ (Tim(x) == -1) 1£ (Tim(x) == -1)

Console.WriteLine ("Khong tim thay");

else {

Conscle.WriteLine ("Da tim thay tai vi trị (0}",

T1m(x));z

a[T1im(x) ].xuat (); }

}

public int BS(int x, int left, int right) {

int mid = (int) ((1left + right) / 2); 1Ý (right >= left)

1Ý (a[mid].LayMS () retCurn mid; else 1£ (a[mid].LbayMS() > x) return BS§(x, 0, mid - 1); else return BS(x, elseẽ return -1; =—= x) mid + 1, n); }

bublic void BinarySearch ()

{

int x;

Console.Write ("Nhap ma so can tim:");

x = Convert.ToTnt32(€onsole.ReadLine ()); 1Ý (BS(x, 0Ô, n) == -1) 1Ý (BS(x, 0Ô, n) == -1)

Consocle.WriteLine ("Khong tim thay"); else

{

Console.WriteLine ("Da tim thay tai vi trị {O)", BS(x,

0, n));

a[BS(x, 0, n)].xuat();

Một phần của tài liệu Flash (Trang 31 - 35)

Tải bản đầy đủ (PDF)

(40 trang)