Đến nội dung


Hình ảnh
- - - - -

lấy số lẻ trong text


  • Please log in to reply
15 replies to this topic

#1 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 07 June 2010 - 02:30 PM

Hôm trước em có viết được cái lisp cộng các số lại vối nhau. khi viết ra kết quả thì có chút rắc rối.
Khi em dùng (setq KQ (rtos tong 2 3)) thì nó lấy 3 số lẽ sau dấu phẩy
còn (setq KQ (rtos (fix tong))) thì nó làm tròn số rồi. hix
em muốn KQ lấy tất cả số lẻ mà các số con có. VD như 1+3 -> KQ =4(ko cần ghi số lẻ).
còn 1.1+3.475 ->kq= 4.575 (lấy tất cả số lẻ)
các anh biết chỉ cho em nha!

với cho em hỏi cách lọc text chỉ toàn số thực thôi, loại bỏ các text có chứa chữ. tại vì khi em cộng dòng text 1A thì nó hiểu như là 1.
Thanks nhiều
  • 0
Hình đã gửi

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 07 June 2010 - 03:32 PM

Hôm trước em có viết được cái lisp cộng các số lại vối nhau. khi viết ra kết quả thì có chút rắc rối.
Khi em dùng (setq KQ (rtos tong 2 3)) thì nó lấy 3 số lẽ sau dấu phẩy
còn (setq KQ (rtos (fix tong))) thì nó làm tròn số rồi. hix
em muốn KQ lấy tất cả số lẻ mà các số con có. VD như 1+3 -> KQ =4(ko cần ghi số lẻ).
còn 1.1+3.475 ->kq= 4.575 (lấy tất cả số lẻ)
các anh biết chỉ cho em nha!

với cho em hỏi cách lọc text chỉ toàn số thực thôi, loại bỏ các text có chứa chữ. tại vì khi em cộng dòng text 1A thì nó hiểu như là 1.
Thanks nhiều

Bạn tham khảo cách lọc TEXT số :
- http://www.cadviet.c...showtopic=5733
- http://www.cadviet.c...o...ost&p=89961

Cú pháp hàm rtos : (rtos number [mode [precision]])
Trong đó :
- precision : An integer specifying the precision.
- mode : chúng ta thuờng dùng hệ thập phân, nên mode=2

vd :
- (rtos 1.2345 2 1) -> "1.2" : 1 số lẻ
- (rtos 1.2345 2 2) -> "1.23" : 2 số lẻ
- (rtos 1.2345 2 3) -> "1.234" : 3 số lẻ


Đây là đọan code lấy số số lẻ của 1 str có giá trị là số thực (REAL)
(defun prec (str)
(1- (strlen (vl-string-left-trim "+-1234567890" str))))

vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1

Để "KQ lấy tất cả số lẻ mà các số con có", bạn cần duyệt qua các số hạng, tìm số số lẻ của từng số hạng rồi so sánh các trị số này với nhau -> tìm trị lớn nhất chính là so_so_le cần tìm.
Gọi hàm rtos để lấy kết quả : (setq KQ (rtos tong 2 so_so_le))
Phần này dành cho bạn.
  • 1

#3 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 07 June 2010 - 03:52 PM

Bạn tham khảo cách lọc TEXT số :
- http://www.cadviet.c...showtopic=5733
- http://www.cadviet.c...o...ost&p=89961

Cú pháp hàm rtos : (rtos number [mode [precision]])
Trong đó :
- precision : An integer specifying the precision.
- mode : chúng ta thuờng dùng hệ thập phân, nên mode=2

vd :
- (rtos 1.2345 2 1) -> "1.2" : 1 số lẻ
- (rtos 1.2345 2 2) -> "1.23" : 2 số lẻ
- (rtos 1.2345 2 3) -> "1.234" : 3 số lẻ


Đây là đọan code lấy số số lẻ của 1 str có giá trị là số thực (REAL)
(defun prec (str)
(1- (strlen (vl-string-left-trim "+-1234567890" str))))

vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1

Để "KQ lấy tất cả số lẻ mà các số con có", bạn cần duyệt qua các số hạng, tìm số số lẻ của từng số hạng rồi so sánh các trị số này với nhau -> tìm trị lớn nhất chính là so_so_le cần tìm.
Gọi hàm rtos để lấy kết quả : (setq KQ (rtos tong 2 so_so_le))
Phần này dành cho bạn.

thanks! để mình từ từ ngâm cú. hee vì cũng biết lisp ko nhiều lắm nên phải từ từ mình mới nghiệm ra dc.
khi nào bí thì bạn trả lời giúp mình nha :rolleyes:
  • 0
Hình đã gửi

#4 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 07 June 2010 - 05:03 PM

Bạn tham khảo cách lọc TEXT số :
- http://www.cadviet.c...showtopic=5733
- http://www.cadviet.c...o...ost&p=89961

Cú pháp hàm rtos : (rtos number [mode [precision]])
Trong đó :
- precision : An integer specifying the precision.
- mode : chúng ta thuờng dùng hệ thập phân, nên mode=2

vd :
- (rtos 1.2345 2 1) -> "1.2" : 1 số lẻ
- (rtos 1.2345 2 2) -> "1.23" : 2 số lẻ
- (rtos 1.2345 2 3) -> "1.234" : 3 số lẻ


Đây là đọan code lấy số số lẻ của 1 str có giá trị là số thực (REAL)
(defun prec (str)
(1- (strlen (vl-string-left-trim "+-1234567890" str))))

vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1

Để "KQ lấy tất cả số lẻ mà các số con có", bạn cần duyệt qua các số hạng, tìm số số lẻ của từng số hạng rồi so sánh các trị số này với nhau -> tìm trị lớn nhất chính là so_so_le cần tìm.
Gọi hàm rtos để lấy kết quả : (setq KQ (rtos tong 2 so_so_le))
Phần này dành cho bạn.

khong xong rồi anh gia_bach ah! em ko hiểu hàm "prec" làm sao để lấy kết quả?
(defun c:prec ()
(setq sel (entsel "\nHay chon so: "))
(setq ent (car sel))
(setq sosole (1- (strlen (vl-string-left-trim "+-1234567890" (entget ent)))))
(setq AA (rtos sosole))
(princ AA)
(princ)
)
VD như ở trên em muốn in ra kết quả là số số lẻ của một số.
anh sửa lại jùm em
  • 0
Hình đã gửi

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 07 June 2010 - 05:21 PM

khong xong rồi anh gia_bach ah! em ko hiểu hàm "prec" làm sao để lấy kết quả?
(defun c:prec ()
(setq sel (entsel "\nHay chon so: "))
(setq ent (car sel))
(setq sosole (1- (strlen (vl-string-left-trim "+-1234567890" (entget ent)))))
(setq AA (rtos sosole))
(princ AA)
(princ)
)
VD như ở trên em muốn in ra kết quả là số số lẻ của một số.
anh sửa lại jùm em

Đã sửa lại cho bạn :
(defun prec (str)
(1- (strlen (vl-string-left-trim "+-1234567890" str))))
(defun c:prec ()
(setq sel (entsel "\nHay chon so: "))
(setq ent (car sel))
(setq sosole (prec (cdr(assoc 1 (entget ent)))))
(setq AA (rtos sosole))
(princ AA)
(princ)
)
Chú ý đối số của hàm prec là 1 String : chuỗi

Một cách khác để xây dựng hàm prec :
(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1
Mình dịch định nghĩa hàm prec trên do mình viết như sau :
Ví dụ (setq a "12.2530")
Hàm sẽ lấy số kí tự của chuỗi a. Tức = 7 kí tự
Trừ đi số kí tự của chuỗi số nguyên của a. (itoa(fix (atof a))) = "12". Tức bằng 2 kí tự
Trừ đi 1 kí tự là dâu chấm "."
Kết quả : 7-2-1 = 4 số lẻ.
Vài dòng giải thích. Hy vọng bạn hiểu ra vấn đề
  • 2

#6 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 08 June 2010 - 08:51 AM

Đã sửa lại cho bạn :
(defun prec (str)
(1- (strlen (vl-string-left-trim "+-1234567890" str))))
(defun c:prec ()
(setq sel (entsel "\nHay chon so: "))
(setq ent (car sel))
(setq sosole (prec (cdr(assoc 1 (entget ent)))))
(setq AA (rtos sosole))
(princ AA)
(princ)
)
Chú ý đối số của hàm prec là 1 String : chuỗi

Một cách khác để xây dựng hàm prec :
(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1
Mình dịch định nghĩa hàm prec trên do mình viết như sau :
Ví dụ (setq a "12.2530")
Hàm sẽ lấy số kí tự của chuỗi a. Tức = 7 kí tự
Trừ đi số kí tự của chuỗi số nguyên của a. (itoa(fix (atof a))) = "12". Tức bằng 2 kí tự
Trừ đi 1 kí tự là dâu chấm "."
Kết quả : 7-2-1 = 4 số lẻ.
Vài dòng giải thích. Hy vọng bạn hiểu ra vấn đề

hee. bjo thi em hiểu cái vụ số lẻ rồi. Một vấn đề nữa. là khi kết quả so sánh các số lẻ của những số hạng thì líp sẽ lấy sosole nhiều nhất. nhưng tổng thì có sosole ít hơn. VD nhé:
1.12399 + 2.12301 = 3.24700 khi này kq là 5 số lẻ. trong khi đáng nhẽ tổng chỉ cần nghi 3 so lẻ thôi. máy làm thì phải chính xác phải ko anh. heee anh chỉ em luôn nha
  • 0
Hình đã gửi

#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 June 2010 - 09:41 AM

hee. bjo thi em hiểu cái vụ số lẻ rồi. Một vấn đề nữa. là khi kết quả so sánh các số lẻ của những số hạng thì líp sẽ lấy sosole nhiều nhất. nhưng tổng thì có sosole ít hơn. VD nhé:
1.12399 + 2.12301 = 3.24700 khi này kq là 5 số lẻ. trong khi đáng nhẽ tổng chỉ cần nghi 3 so lẻ thôi. máy làm thì phải chính xác phải ko anh. heee anh chỉ em luôn nha

Bạn so sánh các sosole cua cac so với nhau rồi mới thực hiện việc tính tổng
Và nếu không muốn số 0 xuất hiện đằng sau nữa như ví dụ của bạn thì thiết lập Biến hệ thống DIMZIN = 8
(setvar "DIMZIN" 8)

Cái này Tue_NV để bạn tự làm

Dùng giải thuật "Lính canh" :
Cho 1 tập hợp số Q={a, b, c...., n}
Chọn 1 số bất kì trong tập hợp Q làm chuẩn, làm "lính canh". Gọi giá trị này là X
Duyệt qua từng phần tử của tập hợp Q.
- Nếu Phần tử nào nhỏ hơn X thì cho qua
- Nếu Phần tử nào lớn hơn X thì lấy phần tử này bằng giá trị của X (Và phần tử này làm "lính canh")
-> Kết quả cuối cùng chính là X. Không có phần tử nào có thể lớn hơn X được nữa.

Cụ thể thế này : Trong lớp có 50 học sinh. Tìm ra người cao nhất
-> Bạn phải chọn ra 1 người bất kì trong lớp làm tiêu chuẩn so sánh. Người nào thấp hơn người đó thì cho qua. Người nào cao hơn người đó thì giữ lại làm tiêu chuẩn so sánh. So sánh cho tới người cuối cùng trong lớp
Thì người được lấy ra làm tiêu chuẩn so sánh cuối cùng chính là người cao nhất
  • 0

#8 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 08 June 2010 - 12:56 PM

Bạn so sánh các sosole cua cac so với nhau rồi mới thực hiện việc tính tổng
Và nếu không muốn số 0 xuất hiện đằng sau nữa như ví dụ của bạn thì thiết lập Biến hệ thống DIMZIN = 8
(setvar "DIMZIN" 8)

Cái này Tue_NV để bạn tự làm

Dùng giải thuật "Lính canh" :
Cho 1 tập hợp số Q={a, b, c...., n}
Chọn 1 số bất kì trong tập hợp Q làm chuẩn, làm "lính canh". Gọi giá trị này là X
Duyệt qua từng phần tử của tập hợp Q.
- Nếu Phần tử nào nhỏ hơn X thì cho qua
- Nếu Phần tử nào lớn hơn X thì lấy phần tử này bằng giá trị của X (Và phần tử này làm "lính canh")
-> Kết quả cuối cùng chính là X. Không có phần tử nào có thể lớn hơn X được nữa.

Cụ thể thế này : Trong lớp có 50 học sinh. Tìm ra người cao nhất
-> Bạn phải chọn ra 1 người bất kì trong lớp làm tiêu chuẩn so sánh. Người nào thấp hơn người đó thì cho qua. Người nào cao hơn người đó thì giữ lại làm tiêu chuẩn so sánh. So sánh cho tới người cuối cùng trong lớp
Thì người được lấy ra làm tiêu chuẩn so sánh cuối cùng chính là người cao nhất

em làm cái lisp cộng số xong rồi. ra số lẻ cũng OK. nhưng sao cái kết quả ra số lẻ nhiều nhất thì nó chỉ báo đúng lần đầu tiên thôi ah. còn những lần sau nó cứ lấy kết quả của lần đầu. anh xem júp em cái lisp tìm số lẻ nhiều nhất này nhá!

(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
(defun c:lemax(/ sodoituong AA index)
(setq ssdt (ssget '((0 . "TEXT"))))
(defun tinhle(ent / sosole solemax ent_max)
(setq sosole (prec (cdr(assoc 1 (entget ent)))))
)
(setq
sodoituong (sslength ssdt)
index 0
)
(repeat sodoituong
(setq
ent_ht (ssname ssdt index)
index (1+ index)
sosole (tinhle ent_ht)
)
(if(or (= index 0) (> sosole solemax))
(setq solemax sosole
ent_max ent_ht)
)
)
(setq AA (rtos solemax))
(princ "\nso le max la:")
(princ AA)
(princ)
)
  • 0
Hình đã gửi

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 June 2010 - 02:43 PM

em làm cái lisp cộng số xong rồi. ra số lẻ cũng OK. nhưng sao cái kết quả ra số lẻ nhiều nhất thì nó chỉ báo đúng lần đầu tiên thôi ah. còn những lần sau nó cứ lấy kết quả của lần đầu. anh xem júp em cái lisp tìm số lẻ nhiều nhất này nhá!

(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
(defun c:lemax(/ sodoituong AA index)
(setq ssdt (ssget '((0 . "TEXT"))))
(defun tinhle(ent / sosole solemax ent_max)
(setq sosole (prec (cdr(assoc 1 (entget ent)))))
)
(setq
sodoituong (sslength ssdt)
index 0
)
(repeat sodoituong
(setq
ent_ht (ssname ssdt index)
index (1+ index)
sosole (tinhle ent_ht)
)
(if(or (= index 0) (> sosole solemax))
(setq solemax sosole
ent_max ent_ht)
)
)
(setq AA (rtos solemax))
(princ "\nso le max la:")
(princ AA)
(princ)
)

Nguyên nhân : Biến sosole và biến solemax kết thúc chương trình chưa được giải phóng.
Bạn tự nghiệm và suy luận sẽ ra liền à. Xem lại dòng màu đỏ mà Tue_NV đã dánh dấu trong bài viết này
  • 1

#10 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 08 June 2010 - 04:51 PM

Nguyên nhân : Biến sosole và biến solemax kết thúc chương trình chưa được giải phóng.
Bạn tự nghiệm và suy luận sẽ ra liền à. Xem lại dòng màu đỏ mà Tue_NV đã dánh dấu trong bài viết này

cảm ơn Tue_NV nghe!
  • 0
Hình đã gửi

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 June 2010 - 05:19 PM

cảm ơn Tue_NV nghe!

@'lp_hai' : DĐ có nút tick Thanks . Bạn bấm vào đó là được.
Tue_NV quên nói thêm : để lấy số lớn nhất trong dãy số -> Bạn cũng có thể dùng hàm Max trong Lisp
Ví dụ : (max 1 2 5 4 7 6) -> Return 7
  • 0

#12 xaakiii_mboet

xaakiii_mboet

    biết vẽ line

  • Members
  • PipPip
  • 21 Bài viết
Điểm đánh giá: 6 (bình thường)

Đã gửi 08 June 2010 - 08:56 PM

Một cách khác để xây dựng hàm prec :
(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
vd :
- (prec "1.234") --> 3
- (prec "1.23") --> 2
- (prec "1.2") --> 1
Mình dịch định nghĩa hàm prec trên do mình viết như sau :

Bác Tuệ ơi vẫn còn lồi, nếu mình gõ: (prec "0") --> -1, thì sao bác, vẫn có những TEXT có giá trị 0. Bác xem lại nhé.
  • 0

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 09 June 2010 - 08:26 AM

Bác Tuệ ơi vẫn còn lồi, nếu mình gõ: (prec "0") --> -1, thì sao bác, vẫn có những TEXT có giá trị 0. Bác xem lại nhé.

Cả Lisp của anh gia_bach và của Tue_NV đều bị "dính" lỗi này. (prec "2") -> -1
Sửa lại như sau :
(defun prec(a)
(if (vl-string-search "." a)
(1- (- (strlen a) (strlen (itoa(fix (atof a))))))
(- (strlen a) (strlen (itoa(fix (atof a)))))
)
)

xaakiii_mboet và lp_hai sử dụng thử nhé
  • 0

#14 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 09 June 2010 - 08:29 AM

Bác Tuệ ơi vẫn còn lồi, nếu mình gõ: (prec "0") --> -1, thì sao bác, vẫn có những TEXT có giá trị 0. Bác xem lại nhé.

Hàm prec trả về -1 khi đối số là số nguyên.

Tuy nhiên với hàm : (defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
khi đối số không chính tắc, kết quả sẽ không chính xác.
vd : (prec "000123.456")

........
VD nhé: 1.12399 + 2.12301 = 3.24700 khi này kq là 5 số lẻ. trong khi đáng nhẽ tổng chỉ cần nghi 3 so lẻ thôi. máy làm thì phải chính xác phải ko anh.

Đưong nhiên máy làm thì phải chính xác, chỉ có nguời cung cấp giải thuật là nhầm lẫn.
Bạn cần xem lại các quy tắc số học khi tính toán với số Thập phân.

........
(defun prec(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
........

So sánh tốc độ giữa 2 hàm tính số chữ số thập phân :
- (defun prec1(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
- (defun prec2(a) (1- (strlen (vl-string-left-trim "+-1234567890" a))))


(defun c:test(/ time1 time2)
(defun prec1(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
(defun prec2(a) (1- (strlen (vl-string-left-trim "+-1234567890" a))))

(setq time1 (getvar "MILLISECS"))
(repeat 10000 (prec1 "123456.789") )
(princ (strcat "\nThoi gian thuc hien 10000 lan ham Prec1 : " (rtos(- (getvar "MILLISECS") time1)) " ms."))

(setq time2 (getvar "MILLISECS"))
(repeat 10000 (prec2 "123456.789") )
(princ (strcat "\nThoi gian thuc hien 10000 lan ham Prec2 : " (rtos(- (getvar "MILLISECS") time2)) " ms."))

(princ)
)
  • 1

#15 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 09 June 2010 - 11:07 AM

Bác Tuệ ơi vẫn còn lồi, nếu mình gõ: (prec "0") --> -1, thì sao bác, vẫn có những TEXT có giá trị 0. Bác xem lại nhé.

Hề hề hề,
Cái vụ này chơi thêm một hàm điều kiện khi chuỗi có số ký tự là 1, vì khi đó chắc chắn chả có thằng số lẻ thập phân nào, vậy nên so_so_le ắt nhận giá trị 0.
Hề hề hề.........
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#16 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 09 June 2010 - 11:18 AM

Hề hề hề,
Cái vụ này chơi thêm một hàm điều kiện khi chuỗi có số ký tự là 1, vì khi đó chắc chắn chả có thằng số lẻ thập phân nào, vậy nên so_so_le ắt nhận giá trị 0.
Hề hề hề.........

Bác phamthanhbinh chưa TỔNG QUÁT rồi :
(defun prec1(a) (1- (- (strlen a) (strlen (itoa(fix (atof a)))))))
(defun prec2(a) (1- (strlen (vl-string-left-trim "+-1234567890" a))))

-> Hai hàm này khi đối số là số nguyên thì hàm prec trả về kết quả là -1 .
Bác phát biểu là : "chơi thêm một hàm điều kiện khi chuỗi có số ký tự là 1," là không TỔNG QUÁT rồi.
Bác cũng hiểu là Tập số nguyên Z= {....-10;...,-3;-2;-1;0;1;2;3....;10;....}

Bác xem lại code mà Tue_NV đã sửa lại ở bài viết số 13

@ anh gia_bach : Cảm ơn anh đã chỉ ra nhược điểm và tốc độ của hàm prec1. Thank you very much :rolleyes:
  • 0