Hallo zusammen,
ich beschaeftige mich seit einiger Zeit mit C++ und habe vorher eigentlich nur Java kennengelernt. Ich habe nun ein kleines Programm geschrieben, welches die Problematik der Hanoi-Tuerme bearbeitet. Also verschieben von A nach C ueber B. Mein Problem ist nun, dass mein Compiler(g++) alles schoen uebersetzt und nicht meckert aber die main() niemals ausgefuehrt wird. Wie gesagt, ich habe noch die Java-Gedanken-Struktur und nach diesem Wissen muesste es laufen. Ich bitte um Hilfe, da ich nichts mehr blicke.. Hier der Code:
#include <iostream>
#include <vector>
using namespace std;
typedef vector <int> tower; //tower kann als Schluesselwort
//fuer Vector<int> verwendet werden
//print_tower gibt den Turm aus. Zuerst die Kennziffer,
//welche das erste Element im Vector ist, dann die restlichen Elemente
void print_tower(tower& t){
cout << "Turm mit der Kennziffer " << t.at(0) << ":" << endl;
for(int i = 1; i<t.size(); i++){
cout << t.at(i) << endl;
}
}
//move fuehrt den geforderten Algorithmus durch. Hierbei wird fuer
//k=1 einfach die oberste Scheibe von A nach C verschoben
int move(int k, tower& a, tower& b, tower& c){
cout << "Vor dem Verschieben: " << endl;
print_tower(a);
print_tower(;
print_tower(c);
if(k == 1){
int z = a.back();
a.pop_back();
c.push_back(z);
cout << z << " von A nach C" << endl << "A und C nach dem Versieben: " << endl;
print_tower(a);
print_tower(c);
}
//ist k != 1, werden erst die ersten n-1 Scheiben von A nach B verschoben
else if(k != 1){
while(a.size() > 2){ // >2 weil die Kennziffer(erstes Element)
// und das eigentliche erste
// Element bleiben sollen
b.push_back(a.back());
cout << a.back() << " von A nach B verschoben" << endl;
a.pop_back();
}
c.push_back(a.back()); // Letztes Element direkt nach C
cout << a.back() << " direkt von A nach C" << endl;
a.pop_back();
while(b.size() > 1){ //Hier sollen nun alle bis auf die Kennziffer
//von B nach C gehen
c.push_back(b.back());
cout << b.back() << " von B nach C verschoben" << endl;
b.pop_back();
}
cout << "Alle Tuerme nach dem Verschieben: " << endl;
print_tower(a);
print_tower(;
print_tower(c);
}
}
int main(){
//Eingabe vom Nutzer in n gespeichert
cout << "Geben Sie eine Ganzzahl ein!";
int n;
cin >> n;
//Drei Tuerme
tower a;
tower b;
tower c;
//A wird mit n Elementen befuellt
//Hier ist es ja so dass das Ende des Vektors
//ja gerade der Anfang der Stange ist.
//Deshalb liegt das kleinste Element am Ende des Vektors
//also am Anfang der Stange
for(int i = n; i>0; i--){
a.push_back(i);
}
move(n, a, b, c);
print_tower(a);
return 0;
}
[/code]
Besten Dank im Vorraus fuer alle die sich die Zeit nehmen
Gruss
Der Basti