Schleife anstatt Rekursion
-
Moin,
ich habe ein Programm geschrieben welches Adressdaten einliest und später wieder ausgiebt.
Nun soll ich die Rekursion entfernen und das mit einer Schleife regeln.Der Teil mit der Rekursion hat folgendermaßen ausgesehen:
KONTAKTDATEN* eingabe () { //Funktion zum Einlesen der Daten KONTAKTDATEN *a = NULL; char neu; static int schleife = 0; a = (KONTAKTDATEN*) malloc(sizeof(KONTAKTDATEN)); a->next = NULL; fflush(stdin); printf("Bitte Nachname eingeben\n"); gets (a->name); printf("Bitte Vorname eingeben\n"); gets (a->vorname); printf("Bitte Strasse eingeben\n"); gets (a->strasse); printf("Bitte Hausnummer eingeben\n"); gets (a->hausnummer); printf("Bitte Postleitzahl eingeben\n"); gets (a->plz); printf("Bitte Ort eingeben\n"); gets (a->ort); printf("Bitte Telefon-Nummer eingeben\n"); gets (a->ecom.telefon); printf("Bitte Handy-Nummer eingeben\n"); gets (a->ecom.handy); printf("Bitte E-Mail-Adresse eingeben\n"); gets (a->ecom.email); int datensatz = schleife +1; printf("\n\nSie haben %d/20 Datensaetzen eingelesen.\nWeiteren Datensatz einlesen? <j> / <n>\n",datensatz); scanf("%c",&neu); printf("\n"); if ((neu != 'n') && (schleife < 19)) { schleife++; a->next = eingabe(); } return a; }
Ich habe keine wirkliche Ahnung wie ich das jetzt anstellen soll...
mein bisheriges "Rumfuhrwerken" sieht so aus:KONTAKTDATEN* eingabe () { //Funktion zum Einlesen der Daten char neu; KONTAKTDATEN *a = NULL; while (neu != 'n') { static int schleife = 0; a = (KONTAKTDATEN*) malloc(sizeof(KONTAKTDATEN)); a->next = NULL; fflush(stdin); printf("Bitte Nachname eingeben\n"); gets (a->name); printf("Bitte Vorname eingeben\n"); gets (a->vorname); printf("Bitte Strasse eingeben\n"); gets (a->strasse); printf("Bitte Hausnummer eingeben\n"); gets (a->hausnummer); printf("Bitte Postleitzahl eingeben\n"); gets (a->plz); printf("Bitte Ort eingeben\n"); gets (a->ort); printf("Bitte Telefon-Nummer eingeben\n"); gets (a->ecom.telefon); printf("Bitte Handy-Nummer eingeben\n"); gets (a->ecom.handy); printf("Bitte E-Mail-Adresse eingeben\n"); gets (a->ecom.email); static int datensatz = 0; datensatz++; printf("\n\nSie haben %d/20 Datensaetzen eingelesen.\nWeiteren Datensatz einlesen? <j> / <n>\n",datensatz); scanf("%c",&neu); printf("\n"); a->next ++; } return a; }
Ich glaube aber das ist ziemlicher Humbug...
Insofern freue ich mich über jede Hilfe!!!
-
Du musst die Schleife außerhalb von eingabe() machen und in der Schleife dann immer eingabe() aufrufen, solange der Benutzer will.