Wie kann ich die Menge der in einem Feld gespeicherten Werte ermitteln?
-
Hallo,
Ich habe ein Feld mit dem Namen Telefonbuch[100].
Jetzt habe ich in dieses Feld ein paar Datensätze gespeichert.
Ich kann diese Datensätze durch eingabe einer Datensatznummer ohne weiteres aufrufen. Wie bekomme ich es jedoch hin das mir angezeigt wird wie viele Felder von den [100] möglichen belegt sind? Ich möchte so falscheingaben verhindern.Freue mich über alle Tipps und anregungen.
-
1. nimm vector klasse statt array
2. kannst ja ne variable erzeugen die immer eines hochgezählt wird, wenn du einen neuen eintrag machst
3. nimm vector klasse statt array
4. beim erzeugen machste überall ne 0 rein. dann kannste ja ganz leicht zählen wieviele einträge, denn beim feld mit der ersten null ist ja schluss
5. nimm vector klasse statt array
-
Danke für die Antwort.
Ich muss diese Aufgabe leider als Array lösen. Hat jemand noch ne andere Idee?
-
struct Eintrag { std::string Telefonnummer; std::string Name; }; Eintrag Telefonbuch[100]; // Alle Einträge im TeleBuch auf "0" setzen. for(int i = 0; i < 100; i++) { Telefonbuch[i].Telefonnummer = ""; Telefonbuch[i].Name = ""; }
Jetzt kannst du ganz einfach prüfen, ob ein Eintrag belegt ist. Wenn Name und/oder Telefonnummer "" sind, dann ist er nicht belegt. (Das war übrigens newkid's Vorschlag Nr. 4)
Oder du fügst deiner Struktur noch eine (bool-)Variable (wie z.B. "IstBelegt") hinzu, die du auf false setzt, wenn der Eintrag nicht belegt ist und auf true, wenn doch. Aber nicht vergessen, auch bei dieser Methode vorher einmal durch das gesamte Telefonbuch zu gehen und IstBelegt auf false zu setzen.
-
Hallo ich habe mir folgendes ausgedacht...
int telefonbuch[100] = {0}; int ctr, elemente; for(ctr = 0, elemente = 0; ctr < (sizeof(telefonbuch)/sizeof(telefonbuch[0])); ctr++) { if(telefonbuch[ctr] != 0) elemente++; } cout <<"Es sind "<<elemente<<" Elemente belegt"<<endl;
also, zuerst musst du die Elemente deines Feldes mit NULL initialisieren
und dann fragst du einfach mit ner for-Schleife ab wieviele davon initialisiert
sind.hoffe ich hab dich richtig verstanden.
es gibt bestimmt elegantere lösungen.gruß ercan