ph
ng th c đ i t
ng. Tôi v n đ nguyên
ươ
ứ ố ượ
ẫ
ể
merge mà không thay đ i vì tôi nghĩ nó là ph
ng th c l p
ổ
ươ
ứ ớ
thì s d đ c h n. Hãy chuy n
ẽ ễ ọ ơ
ể merge thành m t ph ng th c đ i t ng, và chuy n
ộ
ươ
ứ ố ượ
ể mergeSort m t
ộ
cách t
ng ng. B n thích phiên b n
ươ
ứ
ạ
ả merge nào h n?
ơ
Bài t p 2
ậ
Hãy chuy n ph
ng th c l p sau đây thành ph
ng th c đ i t
ng.
ể
ươ
ứ ớ
ươ
ứ ố ượ
public static double
abs(Complex c) {
return
Math.sqrt(c.real * c.real + c.imag * c.imag);
}
Bài t p 3
ậ
Hãy chuy n ph
ng th c l p sau đây thành ph
ng th c đ i l p
ể
ươ
ứ ớ
ươ
ứ ố ớ .
public boolean
equals(Complex b) {
return
(real == b.real && imag == b.imag);
}
Bài t p 4
ậ
Bài t p này là s ti p n i theo Bài t p
ậ
ự ế
ố
ậ 3 c a Ch ng 11. M c đích là nh m th c hành cú pháp
ủ
ươ
ụ
ằ
ự
c a nh ng ph
ng th c đ i t
ng và làm quen v i nh ng thông báo l i có liên quan.
ủ
ữ
ươ
ứ ố ượ
ớ
ữ
ỗ
1.
Hãy chuy n các ph
ng th c trong l p
ể
ươ
ứ
ớ Rational t ph ng th c l p sang ph ng th c đ i t ng, đ ng
ừ
ươ
ứ ớ
ươ
ứ ố ượ
ồ
th i th c hi n nh ng chuy n đ i c n thi t trong
ờ
ự
ệ
ữ
ể
ổ ầ
ế
main.
2. C ý m c m t s l i. Th kích ho t các ph
ng th c l p nh th chúng là ph
ng th c đ i t
ng, và
ố
ắ
ộ ố ỗ
ử
ạ
ươ
ứ ớ
ư ể
ươ
ứ ố ượ
ng
c l i. Hãy th tìm hi u xem th nào là h p l và th nào không, và hi u thông báo l i b n nh n
ượ ạ
ử
ể
ế
ợ ệ
ế
ể
ỗ ạ
ậ
đ
c khi m i vi c r i lên.
ượ
ọ
ệ ố
3. Hãy nghĩ v u và nh
c đi m c a các ph
ng th c l p và ph
ng th c đ i t
ng? Cách nào (th
ng)
ề ư
ượ
ể
ủ
ươ
ứ ớ
ươ
ứ ố ượ
ườ
vi t g n h n? Cách nào di n đ t tính toán m t cách t nhiên h n (ho c xét công b ng, nh ng ki u phép
ế ọ
ơ
ễ
ạ
ộ
ự
ơ
ặ
ằ
ữ
ể
tính nào có th đ
c di n đ t m t cách t nhiên nh t theo m i phong cách)?
ể ượ
ễ
ạ
ộ
ự
ấ
ỗ
Bài t p 5
ậ
M c đích c a bài t p này là vi t m t ch
ng trình đ phát sinh ra nh ng ph n bài poker
ụ
ủ
ậ
ế
ộ
ươ
ể
ữ
ầ
ng u nhiên r i phân lo i chúng, đ ta
c tính đ
c xác su t c a các d ng ph n bài khác nhau. N u b n
ẫ
ồ
ạ
ể
ướ
ượ
ấ ủ
ạ
ầ
ế
ạ
không ch i poker, b n có th đ c v nó đây
ơ
ạ
ể ọ ề
ở
http://en.wikipedia.org/wiki/List_of_poker_hands.
1.
B t đ u b ng
ắ ầ
ằ http://thinkapjava.com/code/CardSoln3.java r i đ m b o ch c r ng b n biên d ch và
ồ ả
ả
ắ ằ
ạ
ị
ch y đ
c ch
ng trình.
ạ
ượ
ươ
2.
Hãy vi t l i đ nh nghĩa cho m t l p có tên
ế ờ ị
ộ ớ
PokerHand (ph n bài), m r ng t
ầ
ở ộ
ừ Deck.
3.
Vi t m t ph
ng th c trong
ế
ộ
ươ
ứ
Deck có tên deal đ t o ra m t PokerHand, chuy n các lá bài t c bài vào
ể ạ
ộ
ể
ừ ỗ
ph n bài, r i tr l i ph n bài này.
ầ
ồ ả ạ
ầ
4.
Trong main, hãy dùng shuffle và deal đ phát sinh và in ra b n
ể
ố PokerHand, m i ph n bài g m 5 lá. B n
ỗ
ầ
ồ
ạ
có thu đ
c k t qu t t không?
ượ ế
ả ố
5.
Vi t m t ph
ng th c
ế
ộ
ươ
ứ PokerHand có tên hasFlush đ tr l i m t giá tr boolean đ ch đ nh xem li u
ể ả ạ
ộ
ị
ể ỉ ị
ệ
ph n bài này có m t flush (5 lá đ ng ch t) hay không.
ầ
ộ
ồ
ấ
6.
Vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
hasThreeKind đ ch đ nh xem li u ph n bài có b ba hay không.
ể ỉ ị
ệ
ầ
ộ
7.
Vi t m t vòng l p đ phát sinh ra vài nghìn ph n bài r i ki m tra xem chúng có ch a 5 lá đ ng ch t, hay
ế
ộ
ặ
ể
ầ
ồ
ể
ứ
ồ
ấ
b ba không.
c tính xác su t đ nh n đ
c m t trong hai d ng ph n bài k trên. Hãy so sánh k t qu
ộ
Ướ
ấ ể
ậ
ượ
ộ
ạ
ầ
ể
ế
ả
thu đ
c v i các xác su t
ượ ớ
ấ ở http://en.wikipedia.org/wiki/List_of_poker_hands.
8. Vi t các ph
ng th c đ ki m tra cho nh ng d ng ph n bài khác. Có d ng d , có d ng khó. Đôi khi b n
ế
ươ
ứ ể ể
ữ
ạ
ầ
ạ
ễ
ạ
ạ
s th y c n vi t m t vài ph
ng th c tr giúp ph c v cho nhi u phép ki m tra khác nhau.
ẽ ấ ầ
ế
ộ
ươ
ứ
ợ
ụ ụ
ề
ể
9. Có nh ng trò ch i poker mà ng
i ch i l y 7 lá bài, r i ch n ra 5 lá bài đ p nh t. Hãy s a l i ch
ng
ữ
ơ
ườ
ơ ấ
ồ
ọ
ẹ
ấ
ử ạ
ươ
trình c a b n đ phát sinh ra các ph n bài 7 lá r i tính l i nh ng xác su t nêu trên.
ủ
ạ
ể
ầ
ồ
ạ
ữ
ấ