/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Beispielprogramm Nr. 66 */ /* der frueheren Vorlesung Datenverarbeitung */ /* */ /* Das Programm kehrt mit Hilfe einer rekursiven Funktion */ /* einen String um. Zur Illustration wird in jeder Rekursions- */ /* stufe der aktuelle Inhalt des Strings ausgegeben. */ /***************************************************************/ #include #include #include char string[40]; /* Funktion zur Ausgabe des Strings */ void drucke() { printf("%s\n",string); } /***************************************************************/ /* Rekursive Funktion zum Umkehren des Strings in strg[] mit */ /* Laenge laenge: */ /* Hat der String eine Laenge kleiner gleich 1, so ist nichts */ /* zu tun. */ /* Ansonsten vertauscht die Funktion den ersten mit dem letz- */ /* ten Eintrag und ruft sich rekursiv fuer das Mittelstueck */ /* des Strings (= String ohne ersten und letzten Eintrag) auf. */ /***************************************************************/ void umkehren(char strg[], unsigned laenge) { char hilf; if (laenge>1) { /* Vertauschen des ersten mit dem letzten Element */ hilf=strg[0]; strg[0]=strg[laenge-1]; strg[laenge-1]=hilf; /* Ausgabe des Strings zu Info-Zwecken */ drucke(); /* rekursiver Aufruf fuer Mittelstueck */ umkehren(&strg[1],laenge-2); } } main() { printf("Bitte Wort mit maximal 40 Zeichen eingeben:\n\n"); scanf("%s",string); printf("\nAusgabe des Strings in jeder Rekursionsstufe:\n\n"); umkehren(string,strlen(string)); printf("\nString in umgekehrter Reihenfolge:\n\n%s\n",string); getch(); }