program makler; const max = 100; type jahr = 1600..2012; arten = (EFH,MFH,RH,REH,DHH,ETW, Sonstiges); ziffer = '0'..'9'; merkmale = (GaesteWC, Garage, Carport, Terrasse, Garten, Balkon, Kamin, Wintergarten, Einbaukueche, Parkett); objekttyp = record verkaeufer: string; plz : array[1..5] of ziffer; hausart: arten; zimmer: integer; baujahr: jahr; ausstattung : set of merkmale; preis: real; verhandelbar: boolean; end; var feld:array[1..max] of objekttyp; akt_anz, eingabe:integer; function neu:objekttyp; var haus: objekttyp; i:integer; s,m:string; v:char; begin write('Geben Sie den Namen des Verkaeufers ein: '); readln(haus.verkaeufer); write('Nun benoetigen wir die PLZ des Objekts: '); for i:=1 to 5 do read(haus.plz[i]); readln(); write('Bitte geben Sie die Art des Objekts an: '); readln(s); if s= 'EFH' then haus.hausart:=EFH else if s ='MFH' then haus.hausart := MFH else if s ='RH' then haus.hausart := RH else if s ='REH' then haus.hausart := REH else if s ='DHH' then haus.hausart := DHH else if s ='ETW' then haus.hausart := ETW else begin writeln('Diese Hausart gibt es nicht!'); haus.hausart := Sonstiges end; write('Bitte geben Sie die Zimmerzahl an: '); readln(haus.zimmer); write('Bitte geben Sie das Baujahr an: '); readln(haus.baujahr); writeln('Bitte geben Sie jetzt die Ausstattungsmerkmale (nacheinander) an:'); haus.ausstattung := []; i:=1; while (not EOF) do begin write(i,': '); readln(m); if m = 'GaesteWC' then haus.ausstattung := haus.ausstattung +[GaesteWC] else if m='Garage' then haus.ausstattung := haus.ausstattung+[Garage] else if m='Carport' then haus.ausstattung := haus.ausstattung+[Carport] else if m='Garten' then haus.ausstattung := haus.ausstattung+[Garten] else if m='Terrasse' then haus.ausstattung := haus.ausstattung+[Terrasse] else if m='Balkon' then haus.ausstattung := haus.ausstattung+[Balkon] else if m='Wintergarten' then haus.ausstattung := haus.ausstattung+[Wintergarten] else if m='Kamin' then haus.ausstattung := haus.ausstattung+[Kamin] else if m='Einbaukueche' then haus.ausstattung := haus.ausstattung+[Einbaukueche] else if m='Parkett' then haus.ausstattung := haus.ausstattung+[Parkett]; i:=i+1; end; write('Und zum Schluss noch den Preis: '); readln(haus.preis); v:='v'; while (v<>'j') and (v<>'n') do begin write('Ist dieser Preis verhandelbar? (j/n) '); readln(v); end; if v='j' then haus.verhandelbar := true; if v='n' then haus.verhandelbar := false; writeln('Danke fuer Ihre Angaben!'); neu := haus; end; procedure ausgabe(haus: objekttyp); var i:integer; begin writeln; writeln('Hier Ihre Angaben zum Objekt:'); writeln('Verkaeufer: ',haus.verkaeufer); write('Ort/Lage: '); for i:=1 to 5 do write(haus.plz[i]); writeln; writeln('Art des Objekts: ',haus.hausart,', Baujahr: ',haus.baujahr, ', Zimmeranzahl: ',haus.zimmer); write('Ausstattung: '); if GaesteWC in haus.ausstattung then write('GaesteWC, '); if Garage in haus.ausstattung then write('Garage, '); if Carport in haus.ausstattung then write('Carport, '); if Terrasse in haus.ausstattung then write('Terrasse, '); if Garten in haus.ausstattung then write('Garten, '); if Balkon in haus.ausstattung then write('Balkon, '); if Wintergarten in haus.ausstattung then write('Wintergarten, '); if Kamin in haus.ausstattung then write('Kamin, '); if Einbaukueche in haus.ausstattung then write('Einbaukueche, '); if Parkett in haus.ausstattung then write('Parkett, '); writeln(); write('Verkaufspreis: ',haus.preis:8:2); if haus.verhandelbar then writeln(' Verhandlungsbasis'); if haus.verhandelbar = false then writeln(' Festpreis, nicht verhandelbar'); end; procedure speichern(o:objekttyp); begin akt_anz:= akt_anz+1; feld[akt_anz] := o; writeln('Objekt gespeichert!'); end; procedure alleausgeben(); var i:integer; begin writeln('************************************************************'); writeln('Liste aller Maklerobjekte: '); for i:=1 to akt_anz do begin ausgabe(feld[i]); writeln('-------------------------------------------------------'); end; end; procedure suche(); var i:integer; gefunden:boolean; plzanfang : array[1..3] of ziffer; begin gefunden := false; write('Geben Sie die ersten drei Ziffern des PLZ-Bereichs ein: '); for i:=1 to 3 do read(plzanfang[i]); for i:=1 to akt_anz do begin if (plzanfang[1]=feld[i].plz[1]) AND (plzanfang[2] = feld[i].plz[2]) AND (plzanfang[3]=feld[i].plz[3]) then begin gefunden := true; ausgabe(feld[i]); writeln('--------------------------------------------------------'); end; end; if not gefunden then writeln('Leider momentan keine Objekte in diesem Bereich im Angebot'); end; begin //Hauptprogramm: akt_anz:=0; eingabe :=4; while (eingabe <> 0) do begin repeat writeln(); writeln(); writeln('------------- MaklerSoft - Hauptmenue --------------'); writeln('Bitte waehlen Sie:'); writeln('1 -- neues Maklerobjekt anlegen'); writeln('2 -- alle aktuellen Objekte anzeigen'); writeln('3 -- Objekte in PLZ-Bereich suchen'); writeln('0 -- Programm beenden'); write('Ihre Wahl: '); readln(eingabe); until (eingabe>=0) OR (eingabe<=3); case eingabe of 1:if akt_anz