Problem beim dekrementieren
-
Hallo
Also, ich wend mich jetz einfach nochmal an euch, sonst wird das nie was...
Selbes Programm wie gestern, nur vereinfacht:
#include <iostream.h> #include <string.h> int main () { string str_name[4]; int anzahl; char cback; do { int loop = 0; //Menue------------------------------------------ int menue; cout<<"Was wollen sie tun?"<<endl; cout<<"\nNamen Eingeben <1>"; cout<<"\nNamen auslesen <2>"<<endl; cin>>menue; switch(menue) { case 1: if (str_name[loop] != "") { ++loop; } else { cout<<"Bitte geben sie hier ihren Vornamen ein:\n"; cin>>str_name[loop]; cout<<endl; cout<<"Wollen sie zurueck ins Hauptmenue? <J/N>"<<endl; cin>>cback; } if (cback == 'j' || cback == 'J') break; case 2: cout<<"Folgende Namen wurden schon eingelesen: "<<endl; cout<<str_name[loop]<<endl; cout<<endl; break; } } while (cback == 'J' || cback == 'j'); getchar(); return 0; }
in case 1 sage ich dem Programm doch das es überprüfen soll ob str_name[loop] (also beim ersten mal noch 0) nicht leer ist. Wenn es nicht leer ist, sollte es dann loop um einen Wert hoch zählen um dann beim nächsten eintritt in den Menüpunkt das ganze wieder zu überprüfen. Eigentlich sollte dann str_name ja schon bei 1 stehen und logischerweiße leer sein... Weil in der else Verzweigung schreib ich ja noch in str_name[0]... Beim ersten mal funtioniert das auch... str_name[0] ist natürlich leer, also komme ich zu else und kann namen eingeben... der wird auch gespeichert... gehe ich erneut in case 1, überpringt er mir dann aber if, sowie else und leitet mich schlichtweg wieder ins menü zurück...
Habt ihr ne lösung?
Mit der for schleife wie gestern gehts deshalb net, weil ja die schleife loop ja immer wieder beim eintreten auf 0 setzt...
-
Hallo,
so wie ich das seche kanst du bein 1. mal was eingeben beim 2. nicht und biem 3. wider. oder?
aber wenst du laut abfrage ins Haubtprogramm zurük wilst dan gest du doch ganz raus.
du kanst doch den zähler für das stringarrey kliech nach der eingabe hochzählen.
MFg TaccoGo
-
ok ich habe es mir gerade mal genauer an gesechen und eigetlich leigt es nur daran das du loop in der menu-schleife immer auf 0 setzt da kanst du hochzelen wie du wilst du setezt es sowieso auf 0.
MFG Taccogo
-
Ich weiß, hab ich ja auch geschreieben... und da such ich ja ne andere lösung dafür
-
ich habe es mal so gemacht.
#include <iostream> #include <string> using namespace std; int main () { string str_name[4]={"","","",""}; int anzahl,i; int loop = 0; char cback; do { //Menue------------------------------------------ int menue; cout<<"Was wollen sie tun?"<<endl; cout<<"\nNamen Eingeben <1>"; cout<<"\nNamen auslesen <2>"; cout<<"\nBeenden <3>"<<endl; cin>>menue; switch(menue) { case 1: if (str_name[loop] == "") { cout<<"Bitte geben sie hier ihren Vornamen ein:\n"; cin>>str_name[loop]; cout<<endl; ++loop; } cout<<"Wollen sie zurueck ins Hauptmenue? <J/N>"<<endl; cin>>cback; if (cback == 'j' || cback == 'J') break; case 2: cout<<"Folgende Namen wurden schon eingelesen: "<<endl; for (i=0;i<loop;i++) { cout<<str_name[i]<<endl; } cout<<endl; break; case 3: cout<<"und Raus"<<endl; cback='e'; break; } } while (cback == 'J' || cback == 'j'); getchar(); return 0; }
ich hofe das hilft dir.
MFG TaccoGo