Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
CaoxuanChung

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

Các bài được khuyến nghị

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 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

 

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

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ề,...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841

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 :"))))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841

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)))
  )
)
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×