Tabelle aufbauen
-
Hi,
versuche grade eine Tabelle aufzubauen. Meine Funktion sieht bis jetzt folgender Maßen aus.
[cpp] void umsaetze() { string tag; string datum; string grund; unsigned short int betrag; cout << " Tag \t " << " Datum \t " << " Grund \t " << " Betrag \t " << endl; cout << endl; cin >> tag >> datum >> grund >> betrag; } [/cpp]
Mit den Tabulator kann ich nun all meine geforderten Daten eingeben.
Jetzt meine 2 Fragen:a) Wie kann ich erreichen, dass die Eingaben abgespeichert werden? Mein Ziel ist, dass ich sie beim nächsten Aufruf der Funktion zur Verfügung habe und weitere
Datensätze zufügen kann. Am besten wäre es, wenn sie auch noch in einer .txt gespeichert werden würden.b) Wie bekomme ich es hin, dass alles in der Tabellenform bleibt/ist?
Danke!
-
a) Da du
timkon schrieb:
string tag;
string datum;
string grund;
unsigned short int betrag;lokal in der Funktion
umsaetze()
angelegt hast, stehen die Variablen nach Verlassen der Funktion natürlich nicht mehr zur Verfügung. Um das zu umgehen, musst du sie entweder global anlegen (was aber nur in bestimmten Fällen sinnvoll ist - wenn diese Daten z.B. im gesamten Programm verwendet werden sollen, es gibt aber auch noch andere Gründe) oder aber im übergeordneten Block (damit ist gemeint: vor den Block, in dem die Variablen benötigt werden, also ausserhalb davon). Anschließend musst die Funktion durch call-by-reference aufrufen, d.h. deine Funktion muss dann Zeiger oder Referenzen auf die Variablen als Parameter übernehmen, dann kann man die Werte innerhalb der Funktion bleibend verändern. Allerdings hast du dann nur einen "Datensatz" für alle Operationen, um etwa mehrere Konten führen zu können oder um die Transaktionen einzeln verwalten zu können, empfiehlt es sich,struct
s oder Klassen hierfür anzulegen, deren Objekte/Instanzen in eine verkettete Liste oder einen Container eingefügt werden.Zum schreiben in die .txt: file I/O example (inzwischen nicht mehr online)
b) Vermutlich gar nicht. Du hast die Einteilung oben bereits ausgegeben, und wenn jetzt jemand lange Zahlen etc. eingibt, bist du eventuell schon weit über der Einteilung. Deshalb würde ich vorschlagen, Tag, Datum, Grund und Betrag nacheinander abzufragen. Beispiel:
cout << "-> Tag: "; cin >> tag; cout << "-> Datum: "; cin >> datum; cout << "-> Grund: "; cin >> grund; cout << "-> Betrag: "; cin >> betrag;
Schon gibts keine Probleme mehr mit Tabs.
-
proggaholic schrieb:
[...] lokal in der Funktion 'umsaetze()' angelegt hast, stehen die Variablen nach
Verlassen der Funktion natürlich nicht mehr zur Verfügung.Ist ja richtig, spielt aber beim Speichern der eingegebenen Daten keine Rolle. Er kann auch direkt in umsaetze() speichern.
proggaholic schrieb:
[...] entweder global anlegen (was aber nur in bestimmten Fällen sinnvoll ist [...]
...eigentliech nie sinnvoll ist.
Greetz, Swordfish