P1 Aufgabenblatt 4 Aufgabe 2
2002-11-15 16:35
Ksireau
Ja ich bins mal wieder =)
Da ist man froh, gerade mal die letzte Aufgabe verstanden zu haben und dann kommt eigentlich fast das gleiche nochmal aber ich schnall es wieder nich =(
Aufgabe lautet:
Definieren Sie für die in der Datei haeuser2.pl gegebene Datenbasis ein Prädikat vorbesitzer(Person,Objektnummer), das wahr ist für alle Personen, die jemals Eigentümer der Immobilie mit der Eintragung Objektnummer registriert waren.
haeuser2.pl:
:- dynamic(obj/5). % ermoeglicht dynamisches Erweitern
:- dynamic(bew/6). % ermoeglicht dynamisches Erweitern
% obj(Objektnummer, Objekttyp, Strassenname, Hausnummer, Baujahr).
obj(1,efh,gaertnerstr,15,1965).
obj(2,efh,bahnhofsstr,27,1943).
obj(3,efh,bahnhofsstr,29,1955).
obj(4,mfh,bahnhofsstr,28,1991).
obj(5,bahnhof,bahnhofsstr,30,1901).
obj(6,kaufhaus,bahnhofsstr,26,1997).
obj(7,efh,gaertnerstr,17,1982).
% bew(Vorgangsnr, Objektnr, Verkaeufer, Kaeufer, Preis, Verkaufsdatum)
% d(Tag,Monat,Jahr)
bew(1,1,mueller,meier,450000,d(1,1,1997)).
bew(2,3,schulze,schneider,560000,d(13,12,1988)).
bew(3,3,schneider,mueller,615000,d(1,12,1996)).
bew(4,5,bund,piepenbrink,3500000,d(1,6,1990)).
bew(5,6,schulze,schneider,23000000,d(3,5,1998)).
bew(6,1,meier,schroeder,560000,d(15,3,1998)).
bew(7,6,schneider,brauer,31000000,d(7,2,1999)).
bew(8,2,soellner,mueller,370000,d(16,9,1992)).
bew(9,5,piepenbrink,weidner,2300000,d(22,7,1997)).
bew(10,3,mueller,haase,590000,d(30,8,1999)).
—————————————————-
Erstmal allgemeine Frage. Heisst jemals registriert, dass auch der jetzige Besitzer aufgelistet werden soll?
Dann das eigentliche Problem: Soweit klappt das alles, aber bei zyklischen Immobilienverkäufen is dann Ende im Gelände. Ich weiß nicht, was ich mit dem Datum anfangen soll…wieso kann es da nicht auch einfach 30.08.1999 heissen. Jetzt kann man die Datumsangaben garnich so schön vergleichen.
Bislang hab ich das folgendermaßen:
vorbesitzer(Person,Objektnummer) :- bew(_,Objektnummer,Person,_,_,_).
vorbesitzer(Person,Objektnummer) :- bew(_,Objektnummer,_,Person,_,_), not(bew(_,Objektnummer,Person,_,_,_)).
Aber wie ich jetzt herausfinden soll, ob jemand ein Haus gekauft, dann wieder verkauft und dann wieder gekauft hat, hab ich kein Plan.
Da ist man froh, gerade mal die letzte Aufgabe verstanden zu haben und dann kommt eigentlich fast das gleiche nochmal aber ich schnall es wieder nich =(
Aufgabe lautet:
Definieren Sie für die in der Datei haeuser2.pl gegebene Datenbasis ein Prädikat vorbesitzer(Person,Objektnummer), das wahr ist für alle Personen, die jemals Eigentümer der Immobilie mit der Eintragung Objektnummer registriert waren.
haeuser2.pl:
:- dynamic(obj/5). % ermoeglicht dynamisches Erweitern
:- dynamic(bew/6). % ermoeglicht dynamisches Erweitern
% obj(Objektnummer, Objekttyp, Strassenname, Hausnummer, Baujahr).
obj(1,efh,gaertnerstr,15,1965).
obj(2,efh,bahnhofsstr,27,1943).
obj(3,efh,bahnhofsstr,29,1955).
obj(4,mfh,bahnhofsstr,28,1991).
obj(5,bahnhof,bahnhofsstr,30,1901).
obj(6,kaufhaus,bahnhofsstr,26,1997).
obj(7,efh,gaertnerstr,17,1982).
% bew(Vorgangsnr, Objektnr, Verkaeufer, Kaeufer, Preis, Verkaufsdatum)
% d(Tag,Monat,Jahr)
bew(1,1,mueller,meier,450000,d(1,1,1997)).
bew(2,3,schulze,schneider,560000,d(13,12,1988)).
bew(3,3,schneider,mueller,615000,d(1,12,1996)).
bew(4,5,bund,piepenbrink,3500000,d(1,6,1990)).
bew(5,6,schulze,schneider,23000000,d(3,5,1998)).
bew(6,1,meier,schroeder,560000,d(15,3,1998)).
bew(7,6,schneider,brauer,31000000,d(7,2,1999)).
bew(8,2,soellner,mueller,370000,d(16,9,1992)).
bew(9,5,piepenbrink,weidner,2300000,d(22,7,1997)).
bew(10,3,mueller,haase,590000,d(30,8,1999)).
—————————————————-
Erstmal allgemeine Frage. Heisst jemals registriert, dass auch der jetzige Besitzer aufgelistet werden soll?
Dann das eigentliche Problem: Soweit klappt das alles, aber bei zyklischen Immobilienverkäufen is dann Ende im Gelände. Ich weiß nicht, was ich mit dem Datum anfangen soll…wieso kann es da nicht auch einfach 30.08.1999 heissen. Jetzt kann man die Datumsangaben garnich so schön vergleichen.
Bislang hab ich das folgendermaßen:
vorbesitzer(Person,Objektnummer) :- bew(_,Objektnummer,Person,_,_,_).
vorbesitzer(Person,Objektnummer) :- bew(_,Objektnummer,_,Person,_,_), not(bew(_,Objektnummer,Person,_,_,_)).
Aber wie ich jetzt herausfinden soll, ob jemand ein Haus gekauft, dann wieder verkauft und dann wieder gekauft hat, hab ich kein Plan.