Hilfe bei Listenprogrammierung.

vs1

Grünschnabel
Hi Leute,

ich versuche eine einfache Liste zu erstellen die drei Sachen speichert.
Name,Vorname und Telefonnummer.(der Code ist weiter unten)
Nur bekomme ich ständig folgende Fehlermeldungen.
Code:
  [C++ Fehler] Unit1.cpp(63): E2451 Undefiniertes Symbol 'i'
[C++ Fehler] Unit1.cpp(88): E2451 Undefiniertes Symbol 'i'
[C++ Fehler] Unit1.cpp(100): E2451 Undefiniertes Symbol 'i'
[C++ Fehler] Unit1.cpp(117): E2467 'Nummereingabe()' kann keinen Wert zurückgeben
[C++ Fehler] Unit1.cpp(119): E2467 'Nummereingabe()' kann keinen Wert zurückgeben
[C++ Fehler] Unit1.cpp(155): E2451 Undefiniertes Symbol 'zahl'

kann mir jemand vielleicht weiterhelfen ?

Vielen Dank!
Code:
#include <iostream.h>


struct person{

char vorname [100];

char nachname [100];

char telefonnummer [100];

};

person telefonbuch [100];



void Initialisierung() {

for (int i = 0; i<=99; i ++){

strcpy (telefonbuch[i].vorname, "");

}

for (int i = 0; i<=99; i ++){

strcpy (telefonbuch[i].nachname, "");

}
 
for (int i = 0; i<=99; i ++){

strcpy (telefonbuch[i].telefonnummer, "");
 
}
 
}


void Eingabe() {




for (int i = 0; i<=99; i ++){
 

if (strlen(telefonbuch[i].vorname)== 0)
break;





else cout << "Datenbank ist voll!";
 
}

 cout<< "Geben sie einen Vornamen ein.";


cin >> telefonbuch[i].vorname;


cout<< "Geben sie einen Nachnamen ein.";


cin >> telefonbuch[i].nachname;



cout<< "Geben sie eine Telefonnummer ein.";


cin >> telefonbuch[i].telefonnummer;



}
 


void Anzeige() {



if (strlen(telefonbuch[i].vorname)== 0) cout<< "Eintrag existiert nicht!";
 
else cout<< telefonbuch[i].vorname;
cout<< telefonbuch[i].nachname;
cout<< telefonbuch[i].telefonnummer;
}
 

void Loeschen() {
 


strcpy (telefonbuch[i].vorname, "");
strcpy (telefonbuch[i].nachname, "");
strcpy (telefonbuch[i].telefonnummer, "");

}



void Nummereingabe (){

int i;

cout<< "Geben Sie bitte eine Zahl zwischen 0 und 99 ein.";

cin >> i;

if (i < 0 || i > 99)
return "-1";

else return (i);

}


void main () {
 
Initialisierung ();


do {
int zahl;

cout<< "Tippen Sie die 1 um einen Eintrag zu machen";

cout<< "Tippen Sie die 2 um einen Eintrag anzuzeigen";

cout<< "Tippen Si die 3 um einen Eintrag zu löschen";

cin >> zahl;
Nummereingabe ();
switch ( zahl ) {



case 1 : Eingabe ();
break;

case 2 : Anzeige();
break;

case 3 : Loeschen();
break;
}
cout<< "Zum Beenden des Programms Drücken Sie die 0";

}while(zahl > 0);



char p[50];
 
cin.getline(p,50);
 
}
 
mit

int i=0;

bspw

und dann muss jenes i beim Funktionsaufruf uebergeben werden, damit der Laufparameter in den weiteren unterfunktionen Eingabe, Ausgabe und Loeschen ueberhaupt bekannt ist ...

bisher kann die Geschichte nicht funktionieren, da du versuchst Laufvariablen in anderen Funktionen zu nutzen, die du nur in Schleifen deklariert hast. Das kann wegen des Gueltigkeitsbereichs nicht funktionieren.
 
Vielen Dank für den Tipp !

Aber warum gibt Nummereingabe 2 Mal keinen Wert zurück ?
Und wie defeniere ich zahl ?

kann jemand da weiterhelfen ?

thx
 
weil eine mit void deklarierte Funktionen keinen Wert zurueck gibt ... solltest die Funktion als int deklarieren oder die Struktur als Referenz uebergeben ...
 
Hi.
Danke. Alle Fehler sind weg bis auf das Lezte.
Wie soll ich zahl definieren?
Das ist die falsche Frage. Du hast die Variable "zahl" ja schon definiert. Allerdings nur innerhalb der do ... while Schleife.

Du benötigst die Variable aber auch außerhalb der Schleife in der Bedingung für das while (...).

Die richtige Frage wäre also: wo soll ich zahl definieren?

Die Antwort ist: Statt
C++:
do { 
  int zahl;
vor der Schleife:
C++:
int zahl;

do {
Gruß
 
Zurück