Hier die Lösung. Mein Programm ist zwar in c++, aber das schnell in pascal umzuschreiben ist ja kein Hit. Musst noch die usereingaben machen ... aber etwas arbeiot will ich dir ja auch lassen, ansonsten funktioniert das programm prima. Bei fragen melde dich:
Hier der Quelltext:
Code:
/*
--
-- AUFGABE ZUR LÖSUNG DER NÄRRISCHEN WIRTSCHAFT
--
-- BEISPIELLÖSUNG ... GPL Veröffentlichung von Marc Reichenbach
*/
#include <iostream>
using namespace std;
struct gegenstand {
int kosten;
bool besitzen;
bool temp_besitzen;
};
int main() {
// Konstanten festlegen
const int LENGTH = 6;
const int buget = 1000;
// Array anlegen für die Gegenstände
gegenstand g[LENGTH];
// Werte müssen geordnet sein
// Hier müsste eigentlich der User die Werte angeben
g[0].kosten = 340;
g[1].kosten = 670;
g[2].kosten = 790;
g[3].kosten = 1320;
g[4].kosten = 2100;
g[5].kosten = 5200;
for (int i =0; i < LENGTH; i++) {
g[i].besitzen = false;
g[i].temp_besitzen = false;
}
// Hauptschleife, läuft solange bis alle Gegenstände erworben sind...
bool alle_erworben = false;
int monate = 0;
int geld = 0;
int temp_geld = 0;
bool gekauft = false;
while (!alle_erworben) {
geld = buget;
monate++;
cout << "---------------------------------" << endl;
cout << "Monat:" << monate << endl;
cout << "\n";
// Gegenstand "j" kaufen
for (int j = LENGTH-1; j >= 0; j--) {
if (g[j].besitzen) continue;
cout << "Kann ich mir den Gegenstand fuer " << g[j].kosten << " leisten? ..."<<endl;
temp_geld = geld;
// Alle billigeren Gegenstände durchlaufen
for (int k = j; k>= 0; k--) {
// Geld zusammenkratzen durch verkäufe
if (g[k].besitzen) {
geld += g[k].kosten;
g[k].temp_besitzen = false;
}
// Erfolgreich, Gegenstand kaufen
if (geld >= g[j].kosten) {
cout << "JA -> Gegenstand fuer " << g[j].kosten << " gekauft ... folgene Verkaufe waren notwendig: " << endl;
geld = geld - g[j].kosten;
g[j].besitzen = true;
g[j].temp_besitzen = true;
// Die Verkäufe updaten
for (int l = 0; l < LENGTH; l++) {
if (g[l].besitzen != g[l].temp_besitzen) {
g[l].besitzen = g[l].temp_besitzen;
cout << "^-- Gegenstand fuer " << g[l].kosten << " verkauft ..." << endl;
}
}
// Weitermachen und versuchen nächsten gegenstand zu erwerben.
cout << "\n\n";
gekauft = true;
break;
}
}
if (!gekauft) {
// Nicht gelungen durch Geld zusammenkratzen ... -> Alte Besitztümer wieder herstellen und Geld updaten
for (int l = 0; l < LENGTH; l++) {
g[l].temp_besitzen = g[l].besitzen;
}
geld = temp_geld;
cout << "Nein."<< endl;
}
gekauft = false;
}
// check ob alles erworben und aufräumarbeiten
alle_erworben = true;
for (int i =0; i < LENGTH; i++) {
if (g[i].besitzen == false) alle_erworben = false;
}
}
cout << "Alle Gegenstaende gekauft ... " << endl;
cin >> gekauft;
}
Hier die Ausgabe:
Code:
---------------------------------
Monat:1
Kann ich mir den Gegenstand fuer 5200 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 2100 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
JA -> Gegenstand fuer 790 gekauft ... folgene Verkaufe waren notwendig:
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:2
Kann ich mir den Gegenstand fuer 5200 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 2100 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
JA -> Gegenstand fuer 1320 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 790 verkauft ...
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
JA -> Gegenstand fuer 340 gekauft ... folgene Verkaufe waren notwendig:
---------------------------------
Monat:3
Kann ich mir den Gegenstand fuer 5200 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 2100 leisten? ...
JA -> Gegenstand fuer 2100 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 1320 verkauft ...
Kann ich mir den Gegenstand fuer 1320 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
---------------------------------
Monat:4
Kann ich mir den Gegenstand fuer 5200 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
JA -> Gegenstand fuer 1320 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 340 verkauft ...
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:5
Kann ich mir den Gegenstand fuer 5200 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
JA -> Gegenstand fuer 790 gekauft ... folgene Verkaufe waren notwendig:
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:6
Kann ich mir den Gegenstand fuer 5200 leisten? ...
JA -> Gegenstand fuer 5200 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 790 verkauft ...
^-- Gegenstand fuer 1320 verkauft ...
^-- Gegenstand fuer 2100 verkauft ...
Kann ich mir den Gegenstand fuer 2100 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:7
Kann ich mir den Gegenstand fuer 2100 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
JA -> Gegenstand fuer 790 gekauft ... folgene Verkaufe waren notwendig:
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:8
Kann ich mir den Gegenstand fuer 2100 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 1320 leisten? ...
JA -> Gegenstand fuer 1320 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 790 verkauft ...
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
JA -> Gegenstand fuer 340 gekauft ... folgene Verkaufe waren notwendig:
---------------------------------
Monat:9
Kann ich mir den Gegenstand fuer 2100 leisten? ...
JA -> Gegenstand fuer 2100 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 1320 verkauft ...
Kann ich mir den Gegenstand fuer 1320 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
---------------------------------
Monat:10
Kann ich mir den Gegenstand fuer 1320 leisten? ...
JA -> Gegenstand fuer 1320 gekauft ... folgene Verkaufe waren notwendig:
^-- Gegenstand fuer 340 verkauft ...
Kann ich mir den Gegenstand fuer 790 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:11
Kann ich mir den Gegenstand fuer 790 leisten? ...
JA -> Gegenstand fuer 790 gekauft ... folgene Verkaufe waren notwendig:
Kann ich mir den Gegenstand fuer 670 leisten? ...
Nein.
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:12
Kann ich mir den Gegenstand fuer 670 leisten? ...
JA -> Gegenstand fuer 670 gekauft ... folgene Verkaufe waren notwendig:
Kann ich mir den Gegenstand fuer 340 leisten? ...
Nein.
---------------------------------
Monat:13
Kann ich mir den Gegenstand fuer 340 leisten? ...
JA -> Gegenstand fuer 340 gekauft ... folgene Verkaufe waren notwendig:
Alle Gegenstaende gekauft ...
Die Files hängen auch noch mal dran. Also die Quelltextdatei und die ausführbare exe.