Nhờ xem xét tối ưu code bài đọc số nguyên dùng hàm và vòng lặp

Nhờ mọi người rút gọn / tối ưu hoặc tìm ra cách hay hơn từ code của mình nhé (tức là nhờ mọi người xem xét code của mình, chỗ nào không hay thì cho mình xin ý kiến và mình sẽ phát triển chỗ đó lên)
Bài tập Đọc số nguyên dùng Hàm và Vòng lặp
Code: http://codepad.org/MXQzRtJL
Xin cảm ơn mọi người nhiều

1 Like

sochuso và sochuso2
sochuso chỉ xài 1 lần thì cho nó là sochuso2 luôn cho tiện. Tiết kiệm được 1 biến :>

Mớ if else có thẻ gom thành mảng như printf("%s",name[digit]); hoặc switch case sẽ dễ nhìn hơn.
if else nhiều quá rồi lắm.

Và… goto??? @_@

2 Likes

Cái đó là 1 mẹo đấy, khỏi phải F5 nhiều lần :smile:

1 Like

cc @drgnz
ấy mà khoang
Anh xem line 12 sẽ hiểu vì sao em thêm biến sochuso2

Cái này em vẫn chưa hình dung lắm, vậy phải sử dụng vòng lặp để duyệt ? Mà vòng lặp thì còn nhiều hạn chế sao đọc được anh :slight_smile:

Mình thấy rồi.
Vậy nên mới kêu xài có 1 lần O3O
Như trường hợp đó thì thay bằng sochuso2 - 2 là xong rồi.
Trừ khi bạn còn sử dụng sochuso ở những lần sau nữa thì sẽ để lại :stuck_out_tongue:

Còn cái printf … thì thế này

char *name[] = {"Khong", "Mot", "Hai" ,...,"Chin"};
char *ten[] = {"","Chuc", "Tram", "Nghin", "Trieu"};

-> name[i] (i < 10 và i >= 0) thì nó sẽ in ra các chữ đó O3O
Tương tự cho ten[]

Và với cái này bạn khỏi cần if else luôn và ko cần for đâu. :>
(Nói chung mình giải thích hơi tệ :sweat_smile:)

1 Like

Hừm, em sẽ xem xét lại và cải tiến rồi update sau, cảm ơn anh :slight_smile:

Không, ý em là ở dòng 12: sdn += chuso*ceil(pow(10.0, sochuso--));
Biến sochuso nó bị thay đổi do dùng để tính số đảo ngược (sdn) nên buộc em phải gán cho nó biến khác. Anh có cách nào hay hơn ?

1 Like

:)) Ặc, h mới để ý vòng while. Sr nhiều nhé.
Còn cách nào khác thì cách đó mình thấy OK rồi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?