Lập hàm đổi số thành chữ bằng C++

Liên hệ QC

nvson

Geotechnics
Thành viên danh dự
Tham gia
20/9/06
Bài viết
793
Được thích
1,285
Nghề nghiệp
ĐCTV - ĐCCT
Hưởng ứng những ngày đang diễn ra hội thảo C++ tại Colorado, USA do Bjarne Stroustrup thuyết trình,

Mình cũng hí hoáy viết thử 1 hàm "đổi số thành chữ" bằng C++

Các bạn thử dùng và cho đánh giá về tốc độ xử lý nhé.

Cá nhân mình nghĩ nó chạy với tốc độ mà đại đa số các chương trình mình biết không thể theo kịp.
(có khả năng cạnh tranh về mặt tốc độ được với AccHelper của A. Tuân rồi, he he)

Cú pháp:
=so(giatri, donvi, dauphancach)

P/S:
giatri va dauphancach có thể bỏ qua
file mình upload cho các bạn dùng Excel 2007 trở lên, x64
 

File đính kèm

  • CustomUDFs.rar
    20.9 KB · Đọc: 31
Mới thử gõ =so( thấy nó IM RE à
 
Upvote 0
Anh phải Add-Ins nó đã chứ
 
Upvote 0
hi anh
Thực ra mình cũng chưa test ở máy khác, nhưng máy mình thì dùng vô tư.
 
Upvote 0
...Các bạn thử dùng và cho đánh giá về tốc độ xử lý nhé.

Cá nhân mình nghĩ nó chạy với tốc độ mà đại đa số các chương trình mình biết không thể theo kịp.
(có khả năng cạnh tranh về mặt tốc độ được với AccHelper của A. Tuân rồi, he he)

...
Bạn đưa kết quả thử nghiệm tốc độ lên xem.
Ví dụ:
- lấy random 1 triệu số (dùng pseudo-random, tức là không có randomize)
1. gọi 1 hàm giả (hàm trống, không làm gì cả, mục đích là để loại thời gian của random số)
2. gọi hàm so (chỉ gọi để tính thôi, không ghi kết quả ra, mục đích là để klhoong mất thời gian ghi)
3. gọi hàm cần so sánh
- thống kê kết quả.
 
Upvote 0
hi anh
Thực ra mình cũng chưa test ở máy khác, nhưng máy mình thì dùng vô tư.
Mạnh xài Windws10x64 - Office 2016x32 chắc lỗi gì đó
Khi mở trực tiếp nó báo lỗi
Còn File mạnh code trên Delphi mở vậy ko thấy lỗi
( Code trong file XLL đó là Build trên Delphi Mạnh Copy code của Tây đó chứ ko phải Mạnh viết he )

Copy build cho nó chạy là mừng rồi còn sao sau này tính TiếpCapture.JPG
 

File đính kèm

  • MyXLL.rar
    598.4 KB · Đọc: 6
Upvote 0
Mạnh xài Windws10x64 - Office 2016x32 chắc lỗi gì đó
Khi mở trực tiếp nó báo lỗi
Còn File mạnh code trên Delphi mở vậy ko thấy lỗi
( Code trong file XLL đó là Build trên Delphi Mạnh Copy code của Tây đó chứ ko phải Mạnh viết he )

Copy build cho nó chạy là mừng rồi còn sao sau này tính TiếpView attachment 224980
Giỏi nhỉ, của anh chay được 3 hàm rồi đó
 
Upvote 0
Giỏi nhỉ, của anh chay được 3 hàm rồi đó
Copy code của Tây đó ... còn tết công gô may ra Mạnh viết được

nhưng khó là viết thêm hàm vào đó nó quá rắc rối chưa biết xử lý sao ??!!
thấy của tuân nó đơn giản cứ viết thêm hàm bình thường vào là nó chạy .... 1 câu hỏi lớn đó ( U đầu đấy )
 
Upvote 0
Copy code của Tây đó ... còn tết công gô may ra Mạnh viết được

nhưng khó là viết thêm hàm vào đó nó quá rắc rối chưa biết xử lý sao ??!!
thấy của tuân nó đơn giản cứ viết thêm hàm bình thường vào là nó chạy .... 1 câu hỏi lớn đó ( U đầu đấy )
hihi cái đó đơn giản lắm mò đi, không khó đâu, anh cứ coi Tây viết sao anh viết vậy (gỏi em tham khảo thử), cái ControlListview mới khó đây liên quan tới Api không
Bài đã được tự động gộp:

Bạn đưa kết quả thử nghiệm tốc độ lên xem.
Ví dụ:
- lấy random 1 triệu số (dùng pseudo-random, tức là không có randomize)

2. gọi hàm so (chỉ gọi để tính thôi, không ghi kết quả ra, mục đích là để klhoong mất thời gian ghi)
3. gọi hàm cần so sánh
- thống kê kết quả.
ANh nói rõ chúc giùm em được hông hihih
 
Upvote 0
...ANh nói rõ chúc giùm em được hông hihih
Tôi nói với người viết code.
Cái đó thuộc về phần căn bản của kỹ thuật thử phần mềm. Người viết code tự động hiểu tôi muốn gì. Nếu không đồng ý với ví dụ của tôi thì Cô/Anh ta có thể giới thiệu cách khác dễ hơn và hoàn hảo hơn để chứng minh câu "tốc độ mà đại đa số các chương trình mình biết không thể theo kịp" của Cô/Anh ta.
 
Upvote 0
Tôi nói với người viết code.
Cái đó thuộc về phần căn bản của kỹ thuật thử phần mềm. Người viết code tự động hiểu tôi muốn gì. Nếu không đồng ý với ví dụ của tôi thì Cô/Anh ta có thể giới thiệu cách khác dễ hơn và hoàn hảo hơn để chứng minh câu "tốc độ mà đại đa số các chương trình mình biết không thể theo kịp" của Cô/Anh ta.
hihi em không thấy dòng này "(có khả năng cạnh tranh về mặt tốc độ được với AccHelper của A. Tuân rồi, he he) "
 
Upvote 0
Tốc độ không phải là cái quan trọng nhất khi nó không là vấn đề nan giải. Tức nếu chạy 1 code mất 20s mà có thể cải tiến để chạy mất 1s thì đáng cải tiến, hi sinh cái khác, vd. sự thuận tiện, khả năng sửa đổi, tùy biến để phù hợp với yêu cầu cá nhân ... Nếu sự chênh lệch tốc độ trước và sau tối ưu chỉ ở hàng ms thì phải ưu tiên những cái khác mà tôi đề cập ở trên. Đánh đổi 1 ms thay những cái tôi đề cập không đáng, không nên.
Nếu cải tiến chỉ được 1 ms nhưng code sẽ chạy hàng chục, hàng trăm nghìn lần thì cũng đáng để cân nhắc vì lúc đó cái lợi sẽ được nhân lên gấp bội. Nhưng nếu để ý tới đặc thù công việc thì tôi chưa hình dung ra được tình huống có trong tập tin hàng chục nghìn chỗ cần "Đổi số ra chữ", "Số tiền bằng lời". Vậy thì nhanh hơn một vài ms để làm gì? Trong khi đó với code VBA của người khác, tuy có chậm hơn vài ms nhưng tôi có khả năng chỉnh sửa để phù hợp với nhu cầu của mình. Tất nhiên ở đây tôi nói tới những người biết chút ít về code. Còn với DLL, XLL của người khác thì bó tay. Họ làm thế nào thì dùng được thì dùng, không dùng được thì bỏ. Không có chuyện tùy biến tùy ý theo nhu cầu của mình được.

Trong trường hợp tổng quát không phải DLL, XLL sẽ nhanh hơn code VBA. Nhanh hay chậm tùy thuộc vào thuật toán. DLL, XLL với thuật toán tồi sẽ chạy chậm hơn VBA với thuật toán tốt.
 
Lần chỉnh sửa cuối:
Upvote 0
hihi em không thấy dòng này "(có khả năng cạnh tranh về mặt tốc độ được với AccHelper của A. Tuân rồi, he he) "
Thực sự tôi cũng chả quan tâm với cái "AccHelper của A. Tuân" gì đó.
Tôi chỉ thấy bà con hay nói đến chuyện "tốc độ" mà chả thấy ai nói về "kỹ thuật thử tốc độ". Nay được dịp thì tôi thử xem người viết code này có kỹ thuật nào mới lạ hay không thôi.

Chú: nếu tôi sử dụng phần mềm đổi số ra chữ thì tôi quan tâm hơn với các giới hạn:
1. số lớn nhất và số nhỏ nhất
2. chọn lựa từ ngữ địa phương. Điển hình:
- tiếng Bắc là nghìn, tiếng Nam là ngàn
- tiếng Bắc là vạn, tiếng Nam là chục ngàn (chục vạn - trăm ngàn)
- tiếng Bắc là linh, tiếng Nam là lẻ
3. các giới hạn khác...
 
Upvote 0
Chào mọi người,
Mình post bài chỉ có ý vui vui chút thôi, ko có ý gì cả.
Mình và A. Tuân là bạn nên trêu đùa vậy thôi.
Mình xin phép khép lại topic này.
Thành thật xin lỗi.
 
Upvote 0
Sẵn tiện đây các anh cho em hỏi xíu. Cái số này đọc thành tiền vậy có đúng hông
1603.84128857271
Một ngàn, sáu trăm lẻ ba đồng, tám mươi bốn tỷ, một trăm hai mươi tám triệu, tám trăm năm mươi bảy ngàn, hai trăm bảy mươi mốt xu
 
Upvote 0
Sẵn tiện đây các anh cho em hỏi xíu. Cái số này đọc thành tiền vậy có đúng hông
1603.84128857271
Một ngàn, sáu trăm lẻ ba đồng, tám mươi bốn tỷ, một trăm hai mươi tám triệu, tám trăm năm mươi bảy ngàn, hai trăm bảy mươi mốt xu
Mấy đồng bạc lẻ kia cho ăn xin còn thấy ngượng. 84128857271 xu mới là tiền. Hơn 841 288 572 đồng đấy nhé.

Nếu người nhập dữ liệu / tính toán đến 11 chữ số sau dấu phẩy thì ắt anh ta muốn tính chính xác đến mức đó. Hàm đọc phải đọc đúng tới độ chính xác mà người ta yêu cầu. Nhưng lúc đó theo tôi phải là "Một ngàn, sáu trăm lẻ ba đồng, tám mươi tư phẩy một trăm hai mươi tám triệu, tám trăm năm mươi bảy ngàn, hai trăm bảy mươi mốt xu" :D
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người,
Mình post bài chỉ có ý vui vui chút thôi, ko có ý gì cả.
Mình và A. Tuân là bạn nên trêu đùa vậy thôi.
Mình xin phép khép lại topic này.
Thành thật xin lỗi.

Em đang làm thì cứ làm tiếp đi xem sao :). Ngành của em khai thác mảng này cũng thú vị đấy. Anh thử test xll của em nhưng cài bị lỗi. Hình như em build cho 64 bit thì phải?
 
Upvote 0
Rốt cuộc thì chuyện gì đã, đang, (và sẽ) xảy ra?
Cái thớt này được lập ra để 2 người bạn đùa code với nhau. Và khán giả được một dịp lỏ mắt ra nhìn?

Cái câu này là vô nghĩa:
...Các bạn thử dùng và cho đánh giá về tốc độ xử lý nhé....
.
Hú hồn, may là mình chưa ngứa nghề thử vài dòng code - tẽn tò thật.
Cũng mấy năm rồi. Cái phiên bản cuối cùng mình dùng là 0x. Chắc mấy phiên bản mới bây giờ nhiều templates thú vị hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom