Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Assoziationsliste

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Assoziationsliste (1869 mal gelesen)
Oneida02
Mitglied
Verfahrenstechnik

Sehen Sie sich das Profil von Oneida02 an!   Senden Sie eine Private Message an Oneida02  Schreiben Sie einen Gästebucheintrag für Oneida02

Beiträge: 4
Registriert: 01.07.2014

erstellt am: 01. Jul. 2014 20:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Definieren Sie in einer Funktion eine Assoziationsliste BAUTEILE, die zu den Assoziationsbegriffen
WASSER und LUFT mindestens jeweils drei Atome enthält. Die gesamte Assoziationsliste soll auf dem Bildschirm ausgegeben werden (alert).

(defun c:test()
(setq Temperatur 55)         
(setq Siedepunkt 100)
(setq Gefrierpunkt 0)

(setq Sauerstoffgehalt 20)
(setq Dichte  1)
(setq Druck 101)

(setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt()))))
(setq LUFT(cons Sauerstoffgehalt(cons Dichte(cons Druck()))))
(list WASSER LUFT)
; Liste mit Wasser und LUFT erstellen
(setq BAUTEILE (WASSER LUFT))              
; Liste Bauteile zusammensetzen aus WASSER und LUFT


(alert(assoc LUFT BAUTEILE(assoc WASSER BAUTEILE))) ; Gibt ein Nachrichtenfenster aus mit der ;Assoziationsliste BAUTEILE
)

-----------------
Fehler: Fehlerhafte Funktion. Bräuchte bitte einen Denkanstoß.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 01. Jul. 2014 20:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

Auch wenn ich vermute das die Aufgabe nicht verstanden wurde:
Kopiere doch eine Zeile nach der anderen in die Befehlszeile (die sinnige VLide scheinst du ja nicht zu nutzen?)
So siehst du wo der Fehler ausgeworfen wird und dann kann man es lösen.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oneida02
Mitglied
Verfahrenstechnik

Sehen Sie sich das Profil von Oneida02 an!   Senden Sie eine Private Message an Oneida02  Schreiben Sie einen Gästebucheintrag für Oneida02

Beiträge: 4
Registriert: 01.07.2014

erstellt am: 01. Jul. 2014 21:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von cadffm:
Auch wenn ich vermute das die Aufgabe nicht verstanden wurde:
Kopiere doch eine Zeile nach der anderen in die Befehlszeile (die sinnige VLide scheinst du ja nicht zu nutzen?)
So siehst du wo der Fehler ausgeworfen wird und dann kann man es lösen.


(defun c:test() ; defun = Deklaration der Funktion test c steht für command, so muss beim Aufrufen der Funktion keine Klammern eingegeben werden
(setq Temperatur 55)          ; Deklaration der Listenvariablen von Wasser
(setq Siedepunkt 100)
(setq Gefrierpunkt 0)

(setq Sauerstoffgehalt 20) ; Deklaration der Listenvariablen von LUFT
(setq Dichte  1)
(setq Druck 101)

(setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt()))))
(setq LUFT(cons Sauerstoffgehalt(cons Dichte(cons Druck()))))
(list WASSER LUFT) ; Liste mit Wasser und LUFT erstellen
(setq BAUTEILE '(WASSER LUFT))                 ; Liste Bauteile zusammensetzen aus WASSER und LUFT

(alert(assoc LUFT BAUTEILE(assoc 'Luft BAUTEILE(assoc WASSER BAUTEILE(assoc 'WASSER BAUTEILE))))) ; Gibt ein Nachrichtenfenster aus mit der Assoziationsliste BAUTEILE
)

----------------
Fehlerhafte Assoziationsliste. Bin Anfänger auf dem Gebiet...
Wobei eine Assoziationsliste eine Liste ist die wiederum Listen enthält, die ich dann über assoc aufrufe und über alert ausgeben kann. Was ist nun falsch? Habe schon alles probiert mit quoted ' und ohne und einige Befehlszeilen verändert. Entweder kommt die Fehlermeldung: Fehlerhafte Assoziationsliste oder fehlerhafte Funktion.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 01. Jul. 2014 21:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

???
Gebe den Code in der Befehlszeile durch,
natürlich ohne die defun Klammer, also ab (setq...
Zeile für Zeile.
So kommst du an die Stelle an der es halt und dann findest du die Lösung.

Schreibe die Liste Bauteile auf, so wie sie später aussehen wird,
das hilft dir Fehler zu erkennen.

Meinst du nicht das es eine Liste Bauteile geben soll,
welche eine Liste enthält mit dem ersten Listenelement Wasser, gefolgt von mind 3 Atomen. Eine weitere mit dem ersten Eintrag Luft.
Dann kann man in Bauteile mit Assoc 'Wasser auf die Liste zugreifen
(setq Bauteile '((Wasser "Schaufelrad" 4 Temperatur)(Luft "Windrad" 27 Nitratwert)))

Als letzten Fehler gibt es noch Alert, diese Funktion will nur StringParameter..
aber bis du bis dahin kommst dauert es vermutlich etwas.

morgentlicher Nachtrag:

hier die Werte deiner 3 Variablen (einfach mit !<Variable> in der Befehlszeile abgefragt nachdem man den Code in der Befehlszeile durch ging)

Befehl: !Wasser
(55 100 0)

Befehl: !Luft
(20 1 101)

Befehl: !Bauteile
(WASSER LUFT)

Ich sehe: Nirgends eine Assoziationsliste..

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 02. Jul. 2014 13:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

Hallo
so wie ich das verstehe soll es hier keine var´s geben außer BAUTEILE. Nur ne liste die ausgegeben werden soll.
Also nur (alert BAUTEILE) da alert nur Strings verarbeitet dann noch ein princ to string dazu da ja nicht dabei steht da diese in irgendeiner Form gegliedert sein muss. Also bau nur ne liste zusammen und gebe sie aus.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oneida02
Mitglied
Verfahrenstechnik

Sehen Sie sich das Profil von Oneida02 an!   Senden Sie eine Private Message an Oneida02  Schreiben Sie einen Gästebucheintrag für Oneida02

Beiträge: 4
Registriert: 01.07.2014

erstellt am: 02. Jul. 2014 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

(defun c:test1()
; defun = Deklaration der Funktion test c steht für command, so muss beim Aufrufen der Funktion keine Klammern eingegeben werden
(setq Temperatur 55)          ; Deklaration der Listenvariablen von Wasser
(setq Siedepunkt 100)
(setq Gefrierpunkt 0)

(setq Sauerstoffgehalt 20) ; Deklaration der Listenvariablen von LUFT
(setq Dichte  1)
(setq Druck 101)

(setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt()))))
(setq LUFT (cons Sauerstoffgehalt(cons Dichte(cons Druck()))))
; Liste mit Wasser und LUFT erstellen
(setq BAUTEILE (list WASSER LUFT))                ; Liste Bauteile zusammensetzen aus WASSER und LUFT

(alert BAUTEILE) ;Gibt ein Nachrichtenfenster aus mit der Assoziationsliste BAUTEILE
)

-------------
Fehlerhafter Argumenttyp; denke es liegt an alert (aber wie konvertier ich eine Liste zu string?)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Jul. 2014 15:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Meldin:
da alert nur Strings verarbeitet dann noch ein princ to string dazu da ja nicht dabei steht da diese in irgendeiner Form gegliedert sein muss. Also bau nur ne liste zusammen und gebe sie aus.

Schau dir die String Funktionen in der Autocad-Hilfe an: Klick

Aber dann bleibt es noch immer bei der Aussage das du überhaupt keine Assoziationsliste hast
und nach der Aufgabenstellung zu urteilen solltest du sowas aufbauen?

Generell antwortest du in etwas merkwürdiger Form auf Antworten, machst du das ganz bewußt so?

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 02. Jul. 2014 15:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

Ich glaube langsam das du hier nicht die ganze Aufgabenstellung bereitgestellt hast da du immer noch an deiner listen Verwurstung festhältst. Es wurde hier dir schon mehrfach gesagt das du keine Assoziationsliste hast.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

neurosis
Mitglied
dipl.ing.


Sehen Sie sich das Profil von neurosis an!   Senden Sie eine Private Message an neurosis  Schreiben Sie einen Gästebucheintrag für neurosis

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 02. Jul. 2014 15:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Oneida02 10 Unities + Antwort hilfreich

moin,
(setq lst1 '(x 1 2 3))
(setq lst2 '(y 4 5 6))
(setq lst3 (list (cons 'z (list lst1 lst2))))

mit (cdr (assoc 'z lst3)) erhaelst du die assozierten werte von z, mit (cdr (assoc 'x (cdr (assoc 'z lst3)))) die von x

fensterausgabe mit (alert (vl-princ-to-string lst3))

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oneida02
Mitglied
Verfahrenstechnik

Sehen Sie sich das Profil von Oneida02 an!   Senden Sie eine Private Message an Oneida02  Schreiben Sie einen Gästebucheintrag für Oneida02

Beiträge: 4
Registriert: 01.07.2014

erstellt am: 02. Jul. 2014 18:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Also ich hab es jetzt hinbekommen. Vielen dank an alle die mir geholfen haben.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz