000
15.06.2006, 11:13 Uhr
TypusM
|
Hallo, folgendes Problem. Ich arbeite mit einfach verketteten Listen. Ich möchte hier im Beispiel eine Person eingeben, die anschließend wieder ausgeben. Ich wird ein NULL-Zeiger ("anker") am Anfang in der Main angelegt. Die schiebt sich weiter nach vorne, wenn eine neue Person angelegt wird. Das Programm compiliert einwandfrei, aber leider wird nach der Eingabe ausgegeben, dass keine Person eingegeben wurde. Ich glaube es liegt an der Parameterübergabe. Ich hoffe ich könnt mir helfen.
Hier mein Code:
C++: |
#include <iostream.h> #include <conio.h>
struct person { int mnr; char name[20]; struct person *next; };
//allg. Fkt. zum Einlesen void eingeben(struct person *temp) { char text[20]; cout<<"MatrikelNR:"; cin>>temp->mnr; cout<<"NAME:"; cin>>text; strcpy(temp->name,text); }
void eingabe_vorne(struct person *anker) { clrscr(); char text[20]; struct person *temp = new person; eingeben(temp); //dem Neuen wird als Nächsten der Anfang zugewiesen temp->next = anker; //der Anfang ist nun der Neue anker = temp; }
//allg. Fkt. zum Auslesen void ausgeben(struct person *temp) { cout<<"MatrikelNR: "<<temp->mnr<<endl; cout<<"NAMED: "<<temp->name<<endl; }
void ausgabe_all(struct person *anker) { clrscr(); if (anker!=NULL) { struct person *temp; temp = anker; while(temp!=NULL) { ausgeben(temp); temp = temp->next; } } else cout << "Keine Daten gespeichert." << endl; cout << "Alle Operationen ausgefuehrt. Bitte Taste druecken."; getch(); }
main() { struct person *anker; anker = NULL; eingabe_vorne(anker); ausgabe_all(anker); }
|
Lege ich den Anker global an und entferne die Parameter in den bedeutenden Funktionen, funtkioniert es. Ist aber nicht Sinn der Sache, es wird gefordert, dass der Anker in der Main angelegt und fleißig mit Parameterübergabe gearbeitet wird.
C++: |
#include <iostream.h> #include <conio.h>
struct person { int mnr; char name[20]; struct person *next; };
struct person *anker;
//allg. Fkt. zum Einlesen struct person eingeben(struct person *temp) { char text[20]; cout<<"MatrikelNR:"; cin>>temp->mnr; cout<<"NAME:"; cin>>text; strcpy(temp->name,text); return *temp; }
void eingabe_vorne() { clrscr(); char text[20]; struct person *temp = new person; eingeben(temp); //dem Neuen wird als Nächsten der Anfang zugewiesen temp->next = anker; //der Anfang ist nun der Neue anker = temp; }
//allg. Fkt. zum Auslesen void ausgeben(struct person *temp) { cout<<"MatrikelNR: "<<temp->mnr<<endl; cout<<"NAMED: "<<temp->name<<endl; }
void ausgabe_all() { clrscr(); if (anker!=NULL) { struct person *temp; temp = anker; while(temp!=NULL) { ausgeben(temp); temp = temp->next; } } else cout << "Keine Daten gespeichert." << endl; cout << "Alle Operationen ausgefuehrt. Bitte Taste druecken."; getch(); }
main() { anker = NULL; eingabe_vorne(); ausgabe_all(); }
|
Dieser Post wurde am 15.06.2006 um 11:30 Uhr von TypusM editiert. |