Zobrazit plnou verzi příspěvku: LISP - ulohy

PepaR
29.04.2005, 12:16
Dobrý den, nemohl by mi prosím někdo pomoci s následuícími LISPy? Předem děkuji.
 
1.Do čtverce A je vepsán čtverec B, jehož vrcholy jsou body, které půlí strany čtverce A a do čtverce B je vepsán čtverec C, jehož vrcholy půlí strany čtverce B. Vytvořte v AutoLISPu program, který vyzve k zadání strany a čtverce A a všechny tři čtverce vykreslí. Program také zobrazí, čemu se rovná poměr obsahu čtverce A ku obsahu čtverce B ku obsahu čtverce C (A:B:C).2.Vytvořte v AutoLISPu program, který vyzve k zadání délky hrany a krychle ABCDA’B’C’D’ a krychli vykreslí. Program nakreslí rovinu KLMNOP, jejíž body leží ve středech hran krychle a vypočítá obvod řezné plochy pomocí a i číselně pro konkrétní krychli.

Seiner
29.04.2005, 12:23
IMHO se jedná o domácí cvičení (seminární práci). Nechcete se o to aspoň pokusit a zeptat se, až nebudete vědět? :-)

PepaR
29.04.2005, 12:26
Není to pro mne, mám na koleji známého který se v tom značně topí a bude rád když si dodělá projekt z C++. Já programátor LISPu nejsem, jsem jen stavař ale napadlo mě že někdo z fóra bude tak schopný a pomůže... údajně by to mělo být jednoduché avšak to já nedokážu posoudit.
 
S pozdravem
Pepa

orlik
05.05.2005, 13:30
Jen tak pro zajimavost jsem si vybral jednodussi z uloh:
(defun c:ctver ( / osmod a a1 a2 c1 c2 )
  (setq osmod (getvar "OSMODE"))  (setvar "OSMODE" 0)  ;vynulovat uchopeni
  (setq a (getreal "\nZadej stranu ctverce A: "))
  (setq a1 (/ a 2.0) a2 (* a1 -1.0))  (setq c1 (/ a1 2.0) c2 (* c1 -1.0))
  (setq pt1a (list a2 a2 0.0) pt2a (list a1 a2 0.0) pt3a (list a1 a1 0.0) pt4a (list a2 a1 0.0))  (setq pt1b (list 0.0 a2 0.0) pt2b (list a1 0.0 0.0) pt3b (list 0.0 a1 0.0) pt4b (list a2 0.0 0.0))  (setq pt1c (list c2 c2 0.0) pt2c (list c1 c2 0.0) pt3c (list c1 c1 0.0) pt4c (list c2 c1 0.0))
  (command "_line" pt1a pt2a pt3a pt4a pt1a "")  (command "_line" pt1b pt2b pt3b pt4b pt1b "")  (command "_line" pt1c pt2c pt3c pt4c pt1c "")
  (setq d1 (distance pt1a pt2a) S1 (* d1 d1))  (setq d1 (distance pt1b pt2b) S2 (* d1 d1))  (setq d1 (distance pt1c pt2c) S3 (* d1 d1))
  (princ)  (princ (strcat (rtos (/ S1 S3) 2 2) " : " (rtos (/ S2 S3) 2 2) " : " (rtos (/ S3 S3) 2 2)))  (princ)
  (setvar "OSMODE" osmod)
)
Zde je maly navod k 1. uloze. K druhe ne ze by se mi nechtelo, ale nerozumel jsem zadani.