Moin zusammen
Ich hab ein Programm geschrieben, das mir die benötigten Zuege beim Spiel
„Türme von Hanoi“ ausgibt. Funktioniert auch alles bis auf eine Kleinigkeit:
Wenn ich mit „j“ bestätige, das ich nochmals das Programm nutzen möchte,
addiert das Programm die benötigten Züge zu den bereits ermittelten Zügen dazu.
Das ist natürlich nicht Sinn der Sache, hat jemand nen Tipp, wie ich das verhindern kann?
Steh grad ein wenig auf dem Schlauch.
Gruß
diemaus
Und hier der Code:
/\* Praeprozessordirektiven \*/
#include
#include
/\* Funktionsprototyp \*/
void verschiebe(int,int,int,int);
void print\_turm(void);
/\* Hauptprogramm \*/
int platten[3][3]={0};
int zuege = 0;
int main(void)
{
char zeichen;
int n;
int zaehler = 0;
platten[0][0] = 3;
platten[0][1] = 2;
platten[0][2] = 1;
do
{
/\* Begrüßung \*/
clrscr();
printf("\n\nDIE TUERME VON HANOI\n\n\n");
print\_turm();
printf("\n\n\nDieses Programm berechnet die benoetigte\n");
printf("Anzahl von Zuegen und gibt die Anzahl\n");
printf("und die auszufuehrenden Zuege aus.\n\n\n");
/\* Eingabe \*/
printf("Bitte geben Sie die Anzahl n der Scheiben ein: n= ");
scanf("%ld", &n);
printf("\n");
verschiebe(n,1,3,2);
printf("\n%d Zuege sind mindestens notwendig.\n\n\n\n", zuege);
/\* Abfrage erneute Berechnung \*/
printf("Moechten Sie die Loesung fuer eine andere\n");
printf("Scheibenanzahl berechnen lassen?\n");
printf("Dann druecken Sie die Taste j: ");
fflush(stdin);
scanf("%c", &zeichen);
}
while (zeichen == 'j');
return 0;
}
void verschiebe (int anzahl, int links, int rechts, int mitte)
{
if (anzahl\>1)
{
verschiebe(anzahl-1, links, mitte, rechts);
}
printf("Verschiebe Scheibe %d von Platz %d nach Platz %d\n", anzahl, links, rechts);
zuege++;
if (anzahl\>1)
{
verschiebe(anzahl-1, mitte, rechts, links);
}
}
/\* Grafik Tuerme \*/
void print\_turm(void)
{
int zeile, turm;
printf("\n\n %c %c %c \n", 179, 179, 179);
for(zeile=2; zeile\>=0; zeile--)
{
for (turm=0; turm