[Code] Prolog Vergleichsabrfrage

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

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  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. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #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).
     

  4. Videos zum Thema
Die Seite wird geladen...
Similar Threads - Code Prolog Vergleichsabrfrage
  1. Antworten:
    1
    Aufrufe:
    721
  2. Antworten:
    2
    Aufrufe:
    822
  3. Antworten:
    1
    Aufrufe:
    478
  4. Antworten:
    0
    Aufrufe:
    359
  5. Antworten:
    6
    Aufrufe:
    727