Computerhilfen.de Logo
Forum
Tipps
News

Programm schreiben, Hanoi-Tempel

Hallo liebe community!

Ich bin noch recht neu beim programmieren und habe bei folgenden Programm ein Problem:
Ich muss ein rekursives Programm (Algorithmus) schreiben, dass mir die Schritte für den Hanoi-Tempel "ausspuckt". Also n (Anzahl der Scheiben) soll
eingelesen werden und das Programm soll mir dann sagen wohin die Scheiben wandern sollen, dass das gewünschte Ergebnis kommt (also eine Liste der einzelnen Schritte soll ausgegeben werden).

Bis jetzt habe ich folgendes, jedoch funktioniert das nicht richtig...:

#include <stdio.h>

void hanoi(int n, int i, int j, int k);

main(){

  int n;

  printf("Anzahl der Scheiben: ");
  scanf("%d", &n);

  hanoi(n, i, j, k);
  return 0;
}

void hanoi(int n, int i, int j, int k){

  int i = 1;
  int j = 2;
  int k = 3;

  if (n>0){
    hanoi(n-1, i, k, j);
    printf("Eine Scheibe wandert vom %f zum %f Pfosten", i, j);
    hanoi(n-1, k, j, i);
  }
}


Antworten zu Programm schreiben, Hanoi-Tempel:

Hallo,

#include <stdio.h>

// void hanoi(int n, int i, int j, int k); // Lass mal die Variablennamen weg, also:
void hanoi(int, int, int, int);

main(){

  int n; // hier noch die anderen Variablen der Funktion main deklarieren: das sind: i, j und k. Variablen in der Funktion hanoi heißen zufällig genauso.

  printf("Anzahl der Scheiben: ");
  scanf("%d", &n);

  hanoi(n, i, j, k);
  return 0;
}

void hanoi(int n, int i, int j, int k){

  int i = 1; // int weglassen!
  j = 2; // int weggelassen.
  k = 3; // ...

  if (n>0){
    hanoi(n-1, i, k, j);
    printf("Eine Scheibe wandert vom %f zum %f Pfosten", i, j);
  /*    Welchen Typ haben i und j?
        Vergleiche Eingabeformat von n in
        ##### scanf("%d", &n); ##### 10 Zeilen darüber */

    hanoi(n-1, k, j, i);
  }
}

Meine Frage

Zitat
Welchen Typ haben i und j?
war schon dazu gedacht, beantwortet zu werden. Und der Hinweis
Zitat

        Vergleiche Eingabeformat von n in
        ##### scanf("%d", &n); ##### 10 Zeilen darüber
sollte darauf hinweisen, dass in der Zeile
  scanf("%d", &n);
die zwar zu main() gehört, aber in der die an die Funktoin hanoi() übergebenen Variablen (zufällig) gleich heißen, deshalb verwunderlich ist, warum dort %f (... vom %f zum %f Pfosten", i, j ...) in der printf-Funktion steht, wenn die scanf-Funktion das n mit %d eingelesen hat.

« software zum stoppen eines videos bei zb 90db für windowsDrei verschiedene Varianten für Binomialkoeffizienten »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!