Macro toogle data cho OS4.5 mà sử dụng SCM 5.6.2.0 (không có so sánh string ) thì đang là dấu ?. Để nó lại cái đã.

Sau đây mình sẽ trình bày macro thuật toán đếm số và tách số. Có thể xem các ví dụ ở macro tương tác với SCM_ScheduledL và macro moves bản 3 để hiểu thêm. Vì đây là macro khá khó hiểu nên mình sẽ trình bày riêng cho ai muốn hiểu và áp dụng.
1. Đếm số chữ số của 1 số nhập từ người dùng



Input $number; /* nhập số */;
Set $c=$so;set $d=-9999;set $n=0; /* sao nhập sau đólưu biến $so ra biến $c để thao tác, set $d=-9999 để không đụng chạm (không bằng $c lúc đầu), $n là số chữ số, ban đầu set $n=0; */ ;
while0 $d>$c || $d<$c; /*khi $d khác $c thì ...., vòng này kết thúc khi $c=$d=0 */ ;
do0; /* thì */ ;
div $c,10;set $d=$$Rest;set $c=$$result;
if0 $d>$c || $d<$c;then0;inc $n;elseif0 $d>0;inc $n;inc $n;endif0; /* chia lấy dư $c cho 10, sau mỗi phép chia thì set $d= phần dư và $c nhận giá trị mới là thương của phép chia. Sau 1 lần chia nếu $c khác $d thì mới tăng d, và nếu $d=$c và $d>0 thì tăng $n 2 lần. Vì đó là trường hợp của các số đặc biệt như 11, 22... 99. Chắc chắn có 2 chữ số */;
endwhile0; /* dừng vòng while */ ;
show so=$so, n=$n, c=$c, d=$d; /* hiển thị kết quả để kiểm tra */
2. Tách số dùng với số đã biết số chữ số rồi
Ví dụ: số 1234 sau khi tách số sẽ được a=1, b=2, c=3, d=4.
Để đơn giản ta chỉ thao tác với số đã biết số chữ số rồi. Nếu chưa biết thì thêm macro đếm số chữ số ở trên vào rồi quy vào các trường hợp cụ thể.
Ví dụ này tiếp diễn phần trên. Bạn được phép nhập một số có 3 hoặc 4 chữ số sau đó ShortcutMe sẽ đưa ra kết quả số đó có bao nhiêu chữ số và được tạo thành từ các số nào.
(Tiếp theo phần trước ...)



if0 $n==3;then0; /* nếu số có 3 chữ số , với các macro mà chắc chắn số chữ số rồi thì không cần kiểm tra đâu */
div $so,10;set $c=$$rest; /* chia lấy dư với 10 ta được chữ số hàng đơn vị và gán nó cho biến $c */ ;
div $$result,10;set $b=$$rest;set $a==$result /* lấy kết quả ở phép chia trước chia lấy dư với 10 ta được chữ số hàng đơn chục là phần dư và chữ số hàng trăm là phần thương và rồi lần lượt gán cho các biến $b, $c
Xong phần 3 chữ số*/
;
Show hang tram = $a; hang chuc = $b; hang don vi = $c;
Elseif0 $n==4; /* nếu có 4 chữ số */;
div $$so,10;set $d=$$rest; /* chữ số hàng đơn vị */;
div $$result,10;set $c=$$rest; /* chữ số hàng chục */;
div $$result,10;set $b=$$rest;set $a=$$result; /* chữ số hàng tram va hang nghin*/;
Show hang nghin =$a, hang tram =$b, hang chuc= $c; hang don vi= $d;
Else0;showKhong phai la so co 3 hoac 4 chu so nhu yeu cau;endif0;
Nếu có thể đừng quên sử dụng các macro trên vào macro của bạn!

[ Posted by Mobile Device ]