Mit dem C++ Code konnte ich leider nichts anfangen. Ich schicke ma trotzdem die Aufgabenstellung.
Die Funktion berechnen(int i, int j) soll folgendes machen.
Idee:
Zuerst dachte ich daran, dass ich in der main eine For-Schleife schreibe und die Laufvariable i übergebe aber da bin ich mir nicht sicher ob ich da richtig liege, da ich ja auch irgendwie die Variable j übergeben muss. Also meine Frage hier muss ich in der main eine for in for schreiben mit den jeweiligen Variablen i für die äussere Schleife und j für die innere Schleife ?
Wenn ja, wie mache ich das mit der Rekursion in der Funktion berechnen(int i, int j) ?
Die Funktion berechnen(int i, int j) soll folgendes machen.
- mit dem aktuellen Stein i soll immer der Nachfolger j im Array Steine betrachtet werden.
- Passt der aktuelle Nachfolger wird die Funktion verlassen und der nächste Stein betrachtet.
- Passt der aktuelle Nachfolger indem man ihn dreht, dann wird er gedreht, die Funktion wird verlassen und der nächste Stein betrachtet.
- Passt der aktuelle Nachfolger nicht(auch nicht durch drehen), dann wird die Funktion berechnen(int i, int j) erneut aufgerufen(Rekursion) und der übernächste Nachfolger überprüft. Passt der übernächste nicht, wird der überübernächste überprüft usw..
- D.h. wenn Sie im Hauptprogramm Stein i = 1 an berechnen(int i, int j) übergeben haben, dann überprüft berechnen(int i, int j) rekursiv der Reihe nach die Steine j = 2 ... 7, ob sie (ggf. auch durch drehen) passen. Wenn Sie im Hauptprogramm Stein j = 4 an berechnen(int i, int j) übergeben haben, dann überprüft berechnen(int i, int j) rekursiv der Reihe nach die Steine 5 - 7, ob sie (ggf. auch durch drehen) passen
- Falls der übernächste, drittnächste etc. Stein passt, wird er mit dem unmittelbar nächsten Stein im Array Steine vertauscht.
- Wenn es bei den restlichen Steinen keinen passenden Anlegekandidaten mehr gibt soll das Spiel mit einer entsprechenden Bildschirmausgabe beendet werden.
Idee:
Zuerst dachte ich daran, dass ich in der main eine For-Schleife schreibe und die Laufvariable i übergebe aber da bin ich mir nicht sicher ob ich da richtig liege, da ich ja auch irgendwie die Variable j übergeben muss. Also meine Frage hier muss ich in der main eine for in for schreiben mit den jeweiligen Variablen i für die äussere Schleife und j für die innere Schleife ?
Wenn ja, wie mache ich das mit der Rekursion in der Funktion berechnen(int i, int j) ?