[Code] Prolog Vergleichsabrfrage

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von sun0025, 7. November 2011 .

Schlagworte:
  1. #1 7. November 2011
    Prolog Vergleichsabrfrage

    Hi,

    bin gerade dabei ein bisschen Prolog zu lernen und bin auf eine Abfrage gekommen wo ich nicht weiter weiß.

    Folgendes:

    Wir haben eine Datenbank von Büchern, wo deren Verkauf aufgelistet ist:
    Spoiler
    % verkauft(PId,Jahr,Preis,Anzahl).
    verkauft(12345,2005,39,23).
    verkauft(12345,2006,39,11).
    verkauft(12345,2007,29,15).
    verkauft(12345,2008,29,17).
    verkauft(12345,2009,29,9).
    verkauft(12345,2010,23,8).
    verkauft(12346,2004,24,129).
    verkauft(12346,2005,24,270).
    verkauft(12346,2006,24,350).
    verkauft(12346,2007,24,168).
    verkauft(12346,2008,24,89).
    verkauft(12346,2009,24,30).
    verkauft(12346,2010,24,2).
    verkauft(12347,2002,29,430).
    verkauft(12347,2003,34,380).
    verkauft(12347,2004,39,137).
    verkauft(12347,2005,39,24).
    verkauft(12347,2006,39,0).
    verkauft(12347,2007,39,0).
    verkauft(12347,2008,39,0).
    verkauft(12347,2009,39,0).
    verkauft(12347,2010,39,0).
    verkauft(12348,2010,29,412).
    verkauft(12349,2009,17,213).
    verkauft(12349,2010,19,45).

    verkauft(23456,2009,13,0).
    verkauft(23456,2010,13,1).
    verkauft(23457,2009,13,1).
    verkauft(23457,2010,13,2).
    verkauft(23458,2010,13,12).

    verkauft(34567,2008,21,99).
    verkauft(34567,2009,21,124).
    verkauft(34567,2010,21,89).
    verkauft(34568,2006,16,4).
    verkauft(34568,2007,16,28).
    verkauft(34568,2008,16,3).
    verkauft(34568,2009,3,112).
    verkauft(34568,2010,3,89).

    Nun soll folgenden Abfrage generiert werden:
    Von welchen Büchern wurden 2010 mehr Exemplare verkauft, als 2009?

    Meine Idee dazu war folgende:

    ?- verkauft(X,Y,C,A),Y=2009;verkauft(E,R,T,Z),R=2010.

    doch dabei fehlt ja noch der vergleich. Weiß nicht so recht wie ich den hinbekomme?

    so far
    sun
     
  2. #2 8. November 2011
    AW: Prolog Vergleichsabrfrage

    Ungetestet, da ich grad kein Prolog auf dem Rechner hab:

    Code:
    mehrVerkauft :- not(verkauft(X,2009,_,_)),verkauft(X,2010,_,_).
    mehrVerkauft :- verkauft(X,2009,_,A),verkauft(X,2010,_,B),A < B.
    Erklärung: Die erste Regel greift dann, wenn ein Buch nur 2010 verkauft wurde, aber nicht 2009. Mit der zweiten Regel bekommst du in der Variable A die Anzahl der Bücher X, welche in 2009 verkauft wurden und in B die Anzahl der Bücher X, welche in 2010 verkauft wurden. Der Unterstrich bezeichnet eine anonyme Variable, welche immer dann benutzt wird, wenn du den Wert nicht weiter benötigst. Dabei steht jeder Unterstrich intern für eine andere Variable.

    Bei deiner Anfrage müsstest du als Ergebnis alle Bücher kriegen, die entweder in 2009 oder in 2010 oder in beiden Jahren verkauft wurden. Das bringt dich insofern nicht weiter, dass z.B. bei dem Buch mit der PId "12348" 2010 Exemplare verkauft wurden, aber 2009 nicht. Damit ist die Variable A ungebunden und du kannst keinen Vergleich durchführen (bzw. würdest eine Fehlermeldung bekommen).
     

  3. Videos zum Thema
    Video Script
Die Seite wird geladen...

Ähnliche Themen mit den Stichworten: Code Prolog Vergleichsabrfrage

  1. [Code] Prolog Signalverarbeitung
    sun0025, 16. Dezember 2011 , im Forum: Programmierung & Entwicklung
    Antworten:
    1
    Aufrufe:
    806
  2. [Code] Prolog Unification
    sun0025, 27. November 2011 , im Forum: Programmierung & Entwicklung
    Antworten:
    2
    Aufrufe:
    913
  3. [Code] ggT mit Prolog
    Hanskopf, 25. April 2010 , im Forum: Programmierung & Entwicklung
    Antworten:
    1
    Aufrufe:
    526
  4. [Code] Prolog Recrusion
    taker875, 14. Januar 2010 , im Forum: Programmierung & Entwicklung
    Antworten:
    0
    Aufrufe:
    400
  5. [Code] Prolog Rätsel
    sft-FTW, 5. Dezember 2009 , im Forum: Programmierung & Entwicklung
    Antworten:
    6
    Aufrufe:
    772