001
05.05.2010, 11:26 Uhr
MaBa
|
Hallo barca2009,
zunächst eine paar kleine Anmerkungen zur main:
Die Ausgabe "Falsche Taste wurde gedrückt!" sollte bei jedem Tastendruck von "f" erscheinen, auch wenn das vermutlich nicht gewollt ist. Zur Lösung kannst du einfach
Code: |
else if (key == "b")
|
verwenden.
Außerdem kannst du dein Programm so ja nicht wirklich testen, da nur eine einzelne Eingabe verlangt wird. Daher schlage ich eine Schleife vor.
Da es sich bei key ja um ein einzelnes Zeichen handelt, würde ich als Datentyp statt string eher char verwenden. Dann kannst du (der Übersichtlichkeit halber) auch ein switch-statement verwenden:
C++: |
char key; while(key != 'q') { cin >> key;
switch(key) { case 'f': pVecDurchlaufen->vectorFW(); break; case 'b': pVecDurchlaufen->vectorBW(); break; default: cout << "Falsche Taste wurde gedrückt!" << std::endl; } }
|
So, jetzt zur Frage: Die Problembeschreibung ist etwas zweideutig, daher weiß ich nicht, ob du jeweils nur ein Zeichen ausgeben willst oder alle Elemente des Vectors in der jeweiligen Reihenfolge. Aufgrund des Beispiels gehe ich jetzt mal davon aus, dass nur ein Element ausgegeben werden soll. Zur Umsetzung kannst du eine zusätzliche Variable "index" einführen und in den zwei Methoden dann über den Index auf den Vector zugreifen:
C++: |
void VectorDurchlaufen::vectorBW() { if(index >= 1) cout << "BW: " << vecDurchlaufen.at(--index) << std::endl; else std::cout << "Erstes Element bereits erreicht\n"; }
void VectorDurchlaufen::vectorFW() { if(index <= 4) cout << "FW: " << vecDurchlaufen.at(++index) << std::endl; else std::cout << "Letztes Element bereits erreicht\n"; }
|
Allerdings ist das nicht wirklich schön und sehr viel unnötiger Code. Du kannst auch gleich im switch-Statement auf den Vector zugreifen und das Element ausgeben oder dir eine Methode schreiben, die abhängig von der Eingabe den Zugriff auf den Vector regelt. Dabei musst du (wie oben) darauf achten, dass du nicht über die Grenzen des Vectors hinaus auf (nicht vorhandene) Elemente zugreifst.
Mit freundlichen Grüßen, MaBa -- Dipl.-Inform. Markus Barth Wissenschaftlicher Mitarbeiter
Fachhochschule Trier Umwelt-Campus Birkenfeld Dieser Post wurde am 05.05.2010 um 11:27 Uhr von MaBa editiert. |