Suchergebnisse

Suchergebnisse 1-20 von insgesamt 26.

  • Hallo, in.read() liest immer ein Zeichen ein, d.h. es wird in der while-Schleife ein Zeichen gelesen und dann nur mit diesem einen Zeichen der gesamte for-Schleifen-Block ausgeführt. Du solltest die read-Funktion in die innere for-Schleife verschieben. Und nicht vergessen die Größe des Array zu initialisieren. Viele Grüße, Siracusa

  • Listen

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, sorry, kommt etwas spät die Antwort. Aber hier noch eine Löungsidee, falls du das Problem nicht schon selbst gelöst hast: Du hast ja jetzt schon die Funktion firsts, die von allen Listen die ersten Elemente in einer neuen Liste speichert. Wenn du dir jetzt noch eine Funktion tails schreibst, die nach dem gleichen Prinzip arbeitet, aber die Restlisten (also immer ohne das erste Elment) in einer Liste speichert, dann kannst du mit einer dritten Funktion (ich hab die mal transpose genannt) ü…

  • Pythagorasbaum

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, du braucht dir nur zu überlegen, an welcher Stelle im Baum man wieder anfangen müßte, einen neuen Baum zu zeichnen. In diesem Falle wären das die beiden Katheten des Dreiecks, d.h. du brauchst in der Funktion paintTriangle nur die entsprechenden draw-Befehle durch einen rekursiven Aufruf von pythagoras-step ersetzen. Und dann muß noch irgendwo ein Rekursionsende rein, z.B. bei einer Minimallänge, damit du keine Endlosrekursion bekommst. Das könnte man auch in der Funktion paintTriangle ma…

  • Pythagorasbaum

    Siracusa - - Logische Sprachen

    Beitrag

    Ich hab deinen Quelltext mal bei mir geladen und da sind die ganzen Turtle-Befehle unbekannt. Auch der erste Befehl (turtles) funktioniert nicht. Das muß irgendeine Scheme-Datei mit den ganzen Befehlen sein. Aber wenn du es jetzt schon geschafft hast ist ja auch egal. :wink:

  • Pythagorasbaum

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, mit Rekursion ist das nicht so schwer. Also du brauchst nur eine Funktion f schreiben, die dir ein Quadrat mit einer bestimmten Kantenlänge x und obendrauf ein rechtwinkliges Dreieck zeichnet. Statt die beiden Katheten im Dreieck als normale Linie zu zeichnen, rufst du dort einfach rekursiv die Funktion f wieder auf, allerdings mit der richtigen Katheten-Länge (kann man einfach ausrechnen). Wichtig ist dabei die Richtung der Turtle beim Funktionsbeginn und beim Funktionsende, sowie vor un…

  • Zitat von "cge": „hallo, versuche mal deine startwerte [code:1]for (matrix=1;matrix<=matrizen;matrix++) { for (zeile=1;zeile<=zeilen;zeile++) { for (spalte=1;spalte<=spalten;spalte++) { [/code:1] bei 0 zu beginnen, also matrix=0, zeile=0, spalte=0,“ Hi, Dann aber auch alle Endwerte entsprechend anpassen! Also z.B. statt matrix<=matrizen dann matrix<matrizen schreiben. @annika: Wenn du ein Array werte[10] definierst, liegen die Indizes im Bereich 0..9, nicht 1..10! Wenn du dann auf das Element mi…

  • Hilfe rekursive Funktion

    Siracusa - - Logische Sprachen

    Beitrag

    Na dann ziehst du set_last eben mittels letrec in die Definition deiner Funktion mit rein, dann hast du nach außen nur eine Funktion.

  • Hilfe rekursive Funktion

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, also ich würde es auf zwei Funktionen aufteilen: [code:1]; Deine Funktion first_to_last(liste): liste=() -> () liste=(e . l) -> set_last(l, e) ; Fügt ein Element an das Ende einer Liste an set_last(liste, elem): liste=() -> (elem . ()) liste=(e . l) -> (e . set_last(l, elem))[/code:1] Mit dem Ansatz sollte es nicht so schwierig sein. :wink: Viele Grüße, Siracusa

  • Probleme mit gets();

    Siracusa - - C, C++ & Objective-C

    Beitrag

    Hallo KingLoui, füge mal nach jedem scanf(...); ein getchar(); ein. Bei mir läuft es dann. Meine Vermutung ist, daß vom scanf noch ein '\n' im Tastaturpuffer bleibt, der beim nächsten gets dafür sorgt, daß diese Eingabe gleich beendet wird. Es könnte auch eins dieser Windows-Konsolenprobleme sein, falls du Windows benutzt. Hab grad kein Linux zur Hand, sonst hätt ich es da mal ohne die getchars getestet. Viele Grüße, Siracusa PS: Benutze doch bitte beim nächsten Mal die Code-Tags (der Code-Knopf…

  • Vokabel Trainer schreiben

    Siracusa - - C, C++ & Objective-C

    Beitrag

    Hallo, ja, ich finde die Beschreibung auch etwas unklar. Speichere die Werte doch in einer einzelnen Liste, also etwa so: [code:1]struct vokabel { string deutsch; string englisch; } vokabel[100] vokabeln; // Liste mit den Vokabeln [/code:1] In den Boost-Libraries gibt's auch irgendwo eine effiziente Implementierung für Bimaps, damit geht die Suche schneller. Die sollte aber erst bei einem Vokabelumfang von ein paar hunderttausend Wörtern interessant werden. Viele Grüße, Siracusa

  • Finden aller Lösungen

    Siracusa - - Logische Sprachen

    Beitrag

    Naja, eher so (ungetestet): [code:1](define (Fortsetzungen Pfad Irrgarten) (list-ref Irrgarten (car Pfad))) (define (suche Start Ziel Irrgarten) (define (suche Pfad akku) (cond ((eq? Ziel (car Pfad)) (concatenate (list akku) (teste Pfad (Fortsetzungen Pfad Irrgarten) akku)))) ((memq (car Pfad) (cdr Pfad)) #F) (else (teste Pfad (Fortsetzungen Pfad Irrgarten) akku)))) (define (teste Pfad Forts akku) (let ((ret (suche (cons (car Forts)) akku))) (cond ((null? Forts) akku) (ret (concatenate ret (test…

  • Finden aller Lösungen

    Siracusa - - Logische Sprachen

    Beitrag

    Ahhh, jetzt ist der Groschen gefallen! Man beachte die Implementierung von 'Fortsetzungen' und werfe gleichzeitig einen Blick auf die Grafik, dann ergibt die Definition des Labyrinths einen Sinn. [code:1](define laby '((1) ; <-- alle von Knoten 0 erreichbaren Knoten (0 2 6) ; von Knoten 1 (1 7) ; von Knoten 2 (4 ; etc. etc. (3 9) (10) (1 11) (2 8 12) (3 7 13) (4) (5 15) (6) (7 13) (8 12 14) (13 19) (10 20) (17 21) (16 18 22) (17 19 23) (14 18 24) (15) (16 25) (17)(18)(19) (21) ))[/code:1] Das wa…

  • Finden aller Lösungen

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, kannst du bitte mal erklären, wie laby aufgebaut ist? Tiefensuche heißt eigentlich, daß jeder Knoten nur einmal auftaucht. Und auch ein Backtracking-Verfahren kann ich in der Definition irgendwie nicht erkennen. Ist laby fest vorgegeben, oder besteht die Möglichkeit, sich die Grafik gleich etwas anders als Datenstruktur abzuspeichern? Und bitte benutze beim nächsten Code-Posting den Code-Button oben, da sind nämlich Smileys im Text. Viele Grüße, Siracusa

  • test

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, also die Funktion arbeitet schon rekursiv. Die Funktion wird mit einer Liste aufgerufen. Davon wird das erste Element ausgegeben und die Funktion wieder mit der Restliste aufgerufen. Die display-Funktion gibt einen Ausdruck in der Konsole aus, also wie ein write oder print in anderen Sprachen. Und das begin erhält einfach beliebig viele Ausdrücke, die dann nacheinander abgearbeitet werden, ähnlich einem begin-end-Block in Pascal oder einem { }-Block in C. Viele Grüße, Siracusa

  • Sortieren einer Liste von Zahlen

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo nochmal, Listen sind in Scheme ein Spezialfall von verschachtelten Paaren. Die leere Liste (was du mit empty meinst) ist nur ein leeres Klammerpaar (). Eine einelementige Liste wäre bspw. (0 . ()), eine zweielementige (0 . (1 . ())), usw. Wichtig ist dabei, daß die Teilliste auf der rechten Seite steht. Wenn deine reverse-Funktion die Liste umdreht, muß die die Teilliste auch wieder auf die rechte Seite. Deine helper-Funktion packt die rekursiv bearbeitete Teilliste aber in die linke Seite…

  • test

    Siracusa - - Logische Sprachen

    Beitrag

    Hallo, eine Liste elementweise ausgeben kannst du bspw. so: [code:1] (define (print-elems xs) (if (not (null? xs)) (begin (display (car xs)) ; Hier steht deine Ausgabefunktion für ein Element (newline) (print-elems (cdr xs))))) [/code:1] Viele Grüße, Siracusa

  • test

    Siracusa - - Logische Sprachen

    Beitrag

    Aber klar doch! Viele Grüße, Siracusa

  • Hallo, wollte nur mal ne Zwischenbemerkung machen. Es wäre m.E. sinnvoller alle BitBtnX-, EditX und LabelX-Variablen jeweils durch Felder zu ersetzen. Das würde ne Menge Schreibarbeit sparen und den Code deutlich flexibler machen. Viele Grüße, Siracusa

  • Hallo, bei SWI-Prolog gibt es die Funktion flatten(List, Result), die genau die von dir gewünschte Aufgabe übernimmt. Wenn du ein anderes Prolog verwendest hilft dir vielleicht diese Implementation: [code:1]% Leere Liste beibehalten. flat([], []). % Innere leere Listen entfernen. flat([[]|Xs], NextXs) :- flat(Xs, NextXs), !. % Innere Listen rekursiv "flachklopfen" und Resultat mit der abzuarbeitenden % Restliste verketten. flat([X|Xs], NextXs) :- X = [_|_], flat(X, Y), flat(Xs, Ys), append(Y, Ys…

  • Anfänger braucht Hilfe

    Siracusa - - Logische Sprachen

    Beitrag

    Hi, ja SirKC, sach ma Bescheid ... :lol: War heut mal wieder ein längerer Tag, sonst hätte ich noch flotter geantwortet. :wink: Der Fehler im Code ist, daß die Reihenfolge der Attribut-Typen für ein Wort nicht konsequent beibehalten wird, z.B. (Wort, Wortklasse, Kasus, Numerus, Genus). [code:1]-- wform(Wort, Wortklasse, ?, ?, ?) wform(lex, n, fem, nom, sg). wform(legis, n, fem, sg, gen). wform(legi, n, dat, sg, fem).[/code:1] sollte bspw. umgeordnet werden zu [code:1]-- wform(Wort, Wortklasse, K…