| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Ostern anzeigen (756 mal gelesen)
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 03. Feb. 2003 12:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich wurde gebeten, den Gregorianischen Kalender in Lisp zu verwirklichen. Da ich nun die Arbeit gemacht habe, hier das Ergebnis. Gruß Theodor Schönwald ---------------------------------------------------------------- ;;; Ostertag ermitteln ;;; Vers.: 1.0, Vorschlag: Schuller, (d) Schönwald (defun C STERN (/ C_E DATUM JAHR J A B C M1 S M N D E TAGE I_W) (setq C_E (getvar "CMDECHO")) ; ECHO-Variable zwischenspeichern (setvar "CMDECHO" 0) ; ECHO ausschalten (setq DATUM (rtos (getvar "CDATE")) ; Datum auslesen und ... JAHR (atoi (substr DATUM 1 4)) ; ... die Jahreszahl ermitteln ... ) (prompt "\n \nVor 1582 gab es keinen Gregorianischen Kalender. ") (prompt "\nSie wollen wissen wann Ostern war, ist oder sein wird?") (prompt " Bitte geben Sie das Jahr an <") (princ JAHR) ; ... und hier vorschlagen. (setq J (getint ">: ")) ; Der Anwender kann selbst eine Jahreszahl eingeben (if (not J) ; wenn nicht ... (setq J JAHR) ; ... wird die ermittelte genommen ) (setq A (rem J 19)) (setq B (rem J 4)) (setq C (rem J 7)) (setq M1 (- (/ (+ (/ (* 8 J) 100) 13) 25) 2)) (setq S (- (/ J 100) (/ J 400) 2)) (setq M (rem (- (+ 15 S) M1) 30)) (setq N (rem (+ 6 S) 7)) (setq D (rem (+ M (* 19 A)) 30)) (if (= D 29) (setq D 28) ) (if (and (= D 28) (>= A 11)) (setq D 27) ) (setq E (rem (+ (* 2 B) (* 4 C) (* 6 D) N) 7)) (setq TAGE (+ D E 1)) (cond ((< J JAHR ) (setq I_W " war, ")) ; wenn, dann ((= J JAHR ) (setq I_W " ist, ")) ((> J JAHR ) (setq I_W " wird sein, ")) ) (prompt "\n \nOstern im Jahre ") ; Bildschirmausgabe: (princ J) (princ I_W) (princ TAGE) (prompt " Tage nach dem 21. März, also am ") (if (>= 10 TAGE) ; wenn ... (progn ; ... dann (princ (+ 21 TAGE)) (prompt ". März") ) (progn ; ... sonst (princ (- TAGE 10)) (prompt ". April") ) ) ;_ end if (getstring "\nWeiter mit einer Taste") ; anhalten zum lesen (setvar "CMDECHO" C_E) ; ECHO wieder Rücksetzen (princ) ) ;_ end defun (princ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 03. Feb. 2003 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Prima! Aber da stellt sich mir die Frage: Wer zum Kuckuck gibt einen Aftrag aus Acad Ostern ermitteln zu wollen???? Entweder haben die Leute zu viel Zeit oder zuviel Geld. Mir fallen doch jetzt ganz spontan keine Gründe ein, wofür ich in Acad dieses Lisp brauchen könnte - schade eigentlich, mal sehen ob ich's nicht als goodie in ein's meiner nächsten Lisp's einbaue. ------------------ Gruß CADwiesel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 03. Feb. 2003 16:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Cadwiesel, deine Frage habe ich mir auch gestellt und keine Antwort gefunden. Zuerst habe es als ABM betrachtet. Aber dann habe ich es anders gesehen. In der heutigen Zeit kommt bei fast jeder Arbeit die Frage: "Was kommt dabei raus". Nun hier ist etwas wo mal nichts dabei raus kommt - einfach so -. Da du es in deine Sammlung einbinden willst, bin nicht nur ich ... Viele Grüße Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 03. Feb. 2003 23:54 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Ihr Kleingeister;-) Natürlich machen solche Funktionen durchaus Sinn in AutoCAD. Es gibt ja auch Aufgaben in AutoCAD, die über eine statische Zeichnung hinausgehen, sagen wir mal eine Prozessvisualisierung im Rahmen des Facilities Management. In den meisten Fabriken sollte sowas am Ostermontag anders aussehen als am Montag davor, oder? AutoCAD ist auch sehr schön für die Darstellung genealogischer Zusammenhänge geeignet - auch da machen solche Dinge Sinn, und es gibt noch viele andere Anwendungen. Viele Firmen drucken sich auch die Urlaubspläne mit AutoCAD. Was mir allerdings wenig gefallen hat - nimm's mir die Kritik nicht übel, Theodor - ist diese Verquickung von Berechnung und Ausgabe! So ist das Ganze als Funktion innerhalb eines Programms nicht zu gebrauchen, man kann das Ergebnis bestenfalls per Copy/Paste irgendwohin übernehmen. Da wir schon mal dabei sind: Hier noch eine Funktion zur Berechnung des Wochentags zu einem gegebenen Datum. Ich habe das mal sauber getrennt: eine Berechnungsfunktion, ein Ausgabe-Programm. So macht das in meinen Augen wirklich Sinn. (defun nWochentag(jahr monat tag / a b c d e f) (setq a(+ monat 10)) (setq b(+(/(- monat 14)12)jahr)) (setq c(- a(* 12(/ a 13)))) (setq d(/(1-(* 13 c))5)) (setq e(/(* 5(rem b 100))4)) (setq f(rem(+ d tag 77 e(/ b 400)(-(* 2(/ b 100))))7)) (if(< f 0)(+ f 7)f) ) (defun strWochentag(jahr monat tag lang / ) (nth(wochentag jahr monat tag) (if lang '("Sonntag""Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag") '("So""Mo""Di""Mi""Do""Fr""Sa") ) ) ) (defun wochentag(jahr monat tag lang / ) (princ(strWochentag jahr monat tag lang)) (princ) ) (wochentag 2003 2 3) => "Montag" Gruss, Axel ------------------ http://www.tutorial.autolisp.info
http://www.advanced.autolisp.info
http://www.activex.autolisp.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 04. Feb. 2003 08:01 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Ich habe auch noch ein Weltraumspiel in lisp. Das ist dazu da um strategische Intergalaktische Planungen der Irdischen Weltraumflotte im Falle einer Verteidigungssituation des Planeten zu simuliern. Dazi ist Acad natürlich besonders gut geeignet, da man auf dieser Software sehr gut die Tatsächlichen Entfernungen und Größen des Weltalls darsetllen kann ------------------ Gruß CADwiesel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 04. Feb. 2003 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 04. Feb. 2003 11:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Axel, zuerst Danke für deine Antwort, du hast richtig vermutet. Mein "Auftraggeber" wollte das Programm a) zum Lernen vo Lisp, b) um zu sehen, ob so etwas überhaupt geht. Nun zur Bemerkung zu der Ausgabe der Ergebnisse, da hab ich mir wirklich keine Mühe gemacht. Wenn du mir das Programm etwas nacharbeitest, finde ich das gut und wir haben alle etwas davon. Viele Grüße Theodor Schönwald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 04. Feb. 2003 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hi Theodor, vielleicht wollte er auch nur mal die Leute beschäftigen - mich hatte er genauso darum gebeten;-) Ich fand die Idee sehr gut, um's auf meinen Tutorial-Seiten als Übungsaufgabe einzubinden. Das Umarbeiten als Funktion wirst du doch auch noch hinkriegen, oder? Übrigens: es sollte auch noch kommentiert sein, ab welchem Jahr die Funktion korrekte Ergebnisse liefert. Der Gauss-Algorithmus ist ja in verschiedenen Versionen im Umlauf, mal ab 1700 (da würde ich bei der Ahnenforschung Probleme kriegen), mal ab 1582 (auch da noch) oder noch früher, und der Alg. von O'Beirne geht erst ab 1900. Tja, und dann brauchen wir noch Funktionen für die Berechnung von Pfingsten, Himmelfahrt, Fronleichnam und vor allem für den Rosenmontag - auch der hängt ja damit zusammen, und da müsste die angesprochene Fabriksimulation ja auch ganz anders aussehen! Oh, da hätte ich jetzt beinahe Weihnachten und Neujahr vergessen;-) Gruss, Axel (noch immer auf das Weltraumspiel wartend) ------------------ http://www.tutorial.autolisp.info
http://www.advanced.autolisp.info
http://www.activex.autolisp.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 04. Feb. 2003 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
|