THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 144

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.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.