Đến nội dung


Hình ảnh
* * * * * 1 Bình chọn

[Nhờ giúp đỡ] Nhập bổ sung liên tục các số thực


  • Please log in to reply
4 replies to this topic

#1 CaoxuanChung

CaoxuanChung

    biết pan

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

Đã gửi 13 April 2013 - 11:37 AM

Em mới học autolisp, gặp phải bài này :" viết chương trình autolisp giúp người dùng nhập bổ sung liên tục các số thực vào 1 danh sách cho đến khi nhập "enter" chưa biết phải giải quyết làm sao, dùng hàm gì? Mong được các a chị em trong diễn đàn chỉ giúp. Thanks 


  • 0

#2 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 13 April 2013 - 04:03 PM

Em mới học autolisp, gặp phải bài này :" viết chương trình autolisp giúp người dùng nhập bổ sung liên tục các số thực vào 1 danh sách cho đến khi nhập "enter" chưa biết phải giải quyết làm sao, dùng hàm gì? Mong được các a chị em trong diễn đàn chỉ giúp. Thanks 

{C}

 

Hề hề hề,

Bạn hãy thử dùng vòng lặp (while....) kết hợp với hàm nhập dữ liệu (getreal ....) xem nhé.

Vấn đề không quá phức tạp nếu bạn biết rằng vòng lặp (while....) cho phép bạn kiểm tra điều kiện để thực hiện qua trình lặp. Còn hàm (getreal...) trả về giá trị số thực bạn nhập vào hoặc trả về nil khi bạn không nhập số thực nào mà nhấn ngay enter. (đó là điều kiện bạn cần check)

Vì bạn đang học nên mình chỉ gợi ý vậy. nếu không làm được, hãy post cái bạn đã làm mà không được lên mình sẽ chỉ tiếp.

Chúc bạn thành công.


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 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 16 April 2013 - 03:14 PM

ban co the kiem tra cho minh khong .tai sao minh lam nhu nay ma no ko chay

 Defun C: nhap ()

(setq A (getreal "\n nhap so thuc:")

(command ".insert" "nhap")

(while 

   (setq nhap (getreal "\n nhap phan tu tiep theo (or ENTER when done):")

(command ".insert" "nhap")

)

)

 Rất mong phản hồi của bạn. Cám on bạn nhiều

 còn khi mình làm thế này

defun c: toan ()

(setq A nil)

(while (setq B (getreal "\n nhap so thuc bo sung (or ENTER when done:"))

setq A (append A (list B)))

)

(princ A)

tại sao khi mình nhập số 12345 thì nó lại không in lên màn hình dãy số đó bạn nhỉ. Bạn có thể check giúp mình đuoc ko? Cám on nhieu nhe!

Hề hề hề,

Nó không chạy vì bạn viết chửa đúng mà thôi.

Trước hết bạn cần hiểu rằng mọi hàm lisp đều phải nằm trong một cặp ngoặc đơn, nghĩa là tổng số các ngoặc đơn mở phải bằng tổng số các ngoặc đơn đóng.

Tỷ như dòng code này: (setq A (getreal "\n nhap so thuc:") thì làm sao mà nó chạy được. bạn lột cả quần lẫn áo của nó mà lại mặc cho nó mỗi cái áo thì nó làm sao dám ra đường mà chạy.

Thứ hai: khi sử dụng hàm (command .....) nghĩa là bạn gọi một lệnh nào đó của CAD và khi đó các tham số của hàm này phải được bối trí và sắp xếp đúng theo trật tự thực hiện của lệnh này trong CAD. Ở đây bạn dùng (command ".insert" "nhap") thì thiệt tình là bạn chửa hiểu cái chi về nó . lệnh insert trong CAD là lệnh nhập vào bản vẽ một block vói các tham số lần lượt là tên block,  điểm chèn, tỷ lệ scale theo phương x, tỷ lệ scale theo phương y, góc xoay. Vậy mà bạn chơi cụt ngủn vậy thì có mà ......

Ở chương trình thứ hai bạn viết cũng mắc lỗi tương tự, nó đã chả chạy được thì in mới ấn cái chi. Vừa chạy vừa giơ tay bịt chim thì có mà còn lâu mới tới đích bạn ạ.

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.

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 April 2013 - 03:27 PM

A cho e xin cái code lệnh e học hỏi thêm được không anh.

Đây bạn :

 

(defun c:nhap () (while (princ(getreal "\nNhap so thuc :"))))


  • 0

#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 16 April 2013 - 03:44 PM

Vậy chỉ đơn giản như này là xong bài hả a

À, do mình không đọc kỹ đề bài. Ý của đề bài như thế này :

 
(defun c:nhap (/ a b)
  (while (setq a (getreal "\nNhap so thuc :"))
    (setq b (append b (list a)))
  )
)

  • 1