fb18.de
/ Diplom Informatik
/ Unterbereich Grundstudium
/ Praktische Informatik
In SCM von listen den maximalen wert bestimmen
Hallo,
ich habe mir die Aufgabe gestellt in scm eine liste von liste in form von Rekursion den maximalen wert zu bestimmen. Das ergebniss sollte so aussehen (max '((1 2) (3 4) (5 6))) -> 6
Bitte um schnelle Hilfe
Wenn Du Dir die Aufgabe gestellt hast, dann versuch doch erstmal, sie alleine zu lösen.
Du bist ja vielleicht witzig.
Es ist eigentlich selbstverständlich das ich die Aufgabe die ich mir gestellt, versucht hab zu lösen.
Da es bei mir geklappt will ich ja hilfe
Wenns geklappt hat, wo ist das Problem? [img]
http://www.fb18.de/gfx/3.gif[/img] Wenn du Probleme hast, dann geh doch mal genauer auf diese Probleme ein, eine Komplettlösung würde ich erstmal nicht erwarten [img]
http://www.fb18.de/gfx/28.gif[/img]
Sorry hab mich vertippt ich meine nicht geklappt hat.
Mein Problem sieht folgender massen aus :
da wir es mit einer liste von liste zutun muß man es doch so abschneiden cddr ,ich schaffe es nicht den rest weiter zu bearbteiten
lös das Problem doch ganz einfach durch Rekursion.
ein kleiner tipp: in prolog siehts ähnlich aus, und das steht ja im Prolog-Skript.
Koenntest Du Dein Problem bitte etwas eingrenzen?
Wieviele Parameter soll Deine Funktion nehmen? Drei? Beliebig viele?
Nein, Du benutzt eine Funktion, die das Max einer Liste bestimmt: (max '(1 2 3)) und eine Funktion, die dir das Max einer Liste von Listen bestimmt.
Mo
Ah, ich hatte mich verlesen und eine Listenklammer (ein Listenklammerpaar) uebersehen.
Jo, die Funktion die das Maximum einer Liste bestimmt gibts ja schon. Die kann man dann benutzen, (wie Mo schon sagte) um eine Funktion zu schreiben, welche das Maximum einer Liste von Listen zurueckgibt (wenn es die nicht auch schon gibt).
Mein Quelltext sieht so aus :
(define (verarbeitung Liste)
(if (zero? (length Liste ))
'()
(verabeitungsliste (> cdr liste ))))
Ich habe Probleme ab verarbeitung.
Ich kriege das nicht hin
Danke für den tipp aber hat mir leider nicht geholfen
1. Nicht (zero? (length liste)) sondern: (null? liste)
2. (define (max liste)
(cond ((null? liste) 0)
((> (car liste) (max (cdr liste))) (car liste))
(else (max (cdr liste)))))
3. (define (max-listen listen)
hier kommt max mit (car liste) == (max (car listen))
Mo
Danke danke Mo du bist retter in der Not [img]
http://www.fb18.de/gfx/14.gif[/img]
Und hier die Version wie du sie wolltest für eine Liste mit Pairs wo das max der zweiten Elementen der Pairs verglichen wird.
(define (max liste)
(cond ((null? liste) 0)
((> (car(cdr(car liste)))(max (cdr liste))) (car(cdr(car liste))))
(else (max (cdr liste)))))
Danke danke und nochmals danke. Man kann sich auf euch verlassen
Kam blöderweise leider nicht dran .
Hehe, witzig, wenns funktioniert hat… Ich habs naemlich nicht getestet… Sollte ja eigentlich auch nur ein Denkanstoss sein. Loesungen verraten ist lame…
Mo