wechsel von void Funktion in int Funktion
-
Hallo, hab meine Frage nochmal extra geschrieben (is bischen übersichtlicher)
Wenn ich mich im write menü (write Funktion) befinde und ich die case Anweisung 'c' durchführe springt er ins vorherige read menu (read Funktion).
Jetzt soll die write Funktion arber so arbeiten, dass sie bei der case Anweisung 'c' in mein Startmenü (int main) wechselt.
Kann mir da ein netter C++ Freak weiterhelfen
Hier nochmal das ganze programm.
# include <iostream>
using namespace std;void write (char wzeichen);
void read (char rzeichen )
{
do
{
cout << "READ-MENÜ:" << endl;
cout << endl;
cout << "c : (close) Datei schließen" << endl;
cout << "r : (read) Datei lesen" << endl;
cout << "l : (lock) Datei zum Schreiben sperren" << endl;
cout << "Ihre Eingabe: " << endl;cin >> rzeichen;
switch (rzeichen)
{
case 'c' : return;
case 'r' : {cout << "Datei wird gelesen" << endl;}break;
case 'l' : {
char wzeichen;
write (wzeichen); //Aufruf write Funktion
}break;
default : {cout << "Unzulässige Eingabe" << endl;}break;
}
}
while (rzeichen != 'c');
}void write (char wzeichen)
{
do
{
cout << "WRITE-MENÜ:";
cout << endl;
cout << "c : (close) Datei schließen" << endl;
cout << "r : (read) Datei lesen" << endl;
cout << "w : (write) Datei schreiben" << endl;
cout << "u : (unlock) Datei freigeben" << endl;
cout << "Ihre Eingabe: " << endl;cin >> wzeichen;
switch (wzeichen)
{
case 'c' : return;
case 'r' : {cout << "Datei wird gelesen" << endl;}break;
case 'w' : {cout << "Datei wird geschrieben" << endl;}break;
case 'u' : {
char rzeichen;
read (rzeichen); //Aufruf read Funktion
}break;
default : {cout << "Unzulässige Eingabe" << endl;}break;
}
}
while (wzeichen != 'c');
}int main ( )
{
char eingabe;
do
{
cout << "STARTMENÜ:" << endl;
cout << endl;
cout << "o : (open) Datei öffnen" << endl;
cout << "e : (end) Programmende" << endl;
cout << "Ihre eingabe: " << endl;cin >> eingabe;
switch (eingabe)
{
case 'o' : {cout << "Datei öffnen" << endl;
char rzeichen ;
read (rzeichen); // Aufruf read Funktion
}break;
case 'e' : {cout << "Und Tschüss" << endl;}break;default : {cout << "Unzulässige Eingabe" << endl;}break;
}
}
while (eingabe!='e');
return 0;
}
-
Hallo, hab meine Frage nochmal extra geschrieben (is bischen übersichtlicher)
Das du sie neugest4ellt hast finde ich gut (bzw. du hättest gleich beim ersten mal einen neuen Thread eröffnen sollen).
Überscihtlich ist es aber immernoch nicht, da du vergessen hast Code-Tags zu verwenden!Und die Frage, warum die Funktionen Argumente haben, die dann nicht genutzt werden, hast du immer noch nicht beantwortet, weshalb ich dir vorerst nicht helfen werde.
-
Schranzer schrieb:
Hallo, hab meine Frage nochmal extra geschrieben (is bischen übersichtlicher)
}
ich sage doch zum schießen
aber es gilt noch immer:
1)neverevereverever doppelposts!
2)es gibt doch hier so nette features, sog. code-tags (das ist der button wo c/c++ draufsteht)
-
1)neverevereverever doppelposts!
Stimmt. Das liegt heir aber nicht vor. Er hatte eine Frage und dafür einen Thread erstellt. Dann hatte er eine neue, weitere Frage und diese versehentlich an den ersten Thread angehängt, statt einen neuen zu eröffnen. Das hat er mit diesem Thread (wenn auch etwas spöt) nachgeholt.
-
'tschuldijung! Sah sich halt nur ziemlich ähnlich und dann noch mit der Überschrift...
Schranzer schrieb:
Hallo, hab meine Frage nochmal extra geschrieben
...aber ich laße euch jetzt in Ruhe cu
-
Sorry, war bischen verpeilt. schreibe jetzt nur noch in dieses thread
-
code-tags hab ich jetzt auch
# include <iostream> using namespace std; void write (char wzeichen); void read (char rzeichen) { do { cout << "READ-MENÜ:" << endl; cout << endl; cout << "c : (close) Datei schließen" << endl; cout << "r : (read) Datei lesen" << endl; cout << "l : (lock) Datei zum Schreiben sperren" << endl; cout << "Ihre Eingabe: " << endl; cin >> rzeichen; switch (rzeichen) { case 'c' : return; case 'r' : {cout << "Datei wird gelesen" << endl;}break; case 'l' : { char wzeichen; write (wzeichen); //Aufruf write Funktion }break; default : {cout << "Unzulässige Eingabe" << endl;}break; } } while (rzeichen != 'c'); } void write (char wzeichen) { do { cout << "WRITE-MENÜ:"; cout << endl; cout << "c : (close) Datei schließen" << endl; cout << "r : (read) Datei lesen" << endl; cout << "w : (write) Datei schreiben" << endl; cout << "u : (unlock) Datei freigeben" << endl; cout << "Ihre Eingabe: " << endl; cin >> wzeichen; switch (wzeichen) { case 'c' : return; case 'r' : {cout << "Datei wird gelesen" << endl;}break; case 'w' : {cout << "Datei wird geschrieben" << endl;}break; case 'u' : { char rzeichen; read (rzeichen); //Aufruf read Funktion }break; default : {cout << "Unzulässige Eingabe" << endl;}break; } } while (wzeichen != 'c'); } int main ( ) { char eingabe; do { cout << "STARTMENÜ:" << endl; cout << endl; cout << "o : (open) Datei öffnen" << endl; cout << "e : (end) Programmende" << endl; cout << "Ihre eingabe: " << endl; cin >> eingabe; switch (eingabe) { case 'o' : {cout << "Datei öffnen" << endl; char rzeichen ; read (rzeichen); // Aufruf read Funktion }break; case 'e' : {cout << "Und Tschüss" << endl;}break; default : {cout << "Unzulässige Eingabe" << endl;}break; } } while (eingabe!='e'); return 0; }
So das return in der void write ist falsch, da ich dadurch wieder in mein void write gelange.
-
Fehler im letzten Text von mir " return in der void write ist falsch, da ich dadurch wieder in mein void read gelange " soll das heißen.
vermute mal, dass ich anstatt das return in der write Funktion irgendwie einen Aufruf zur int main Funktion machen muss.
-
ich habe ja noch immer nicht die Logik deines Programmes so ganz raus, aber du solltest dir auf jeden Fall mal mehr Gedanken um das Design machen: 'von wo aus will ich wohin und was gebe ich mit und was erwarte ich zurück'. Wildes hin und her Gespringe ist das beste was du machen kannst, um die Logik ganz zu zerschießen.
Empfehlung:
1st) denken
2nd) denken
3rd) überdenken
4th) programmieren :p
Aber ich will ja nicht nur meckern, sondern dir auch helfen. Ich weiß ja nicht ob der Code genau das macht, was du erwartest, aber so wie ich das verstanden habe, erfüllt er deine Anforderungen:
#include<iostream> using namespace std; void read(void); void write(void); int main(){ char eingabe; do{ cout<< "STARTMEN\x9A:" << endl << endl << "o : (open) Datei oeffnen"<< endl << "e : (end) Programmende" << endl << "Ihre eingabe: " << endl; cin >> eingabe; switch( eingabe ){ case 'o': cout << "Datei oeffnen" << endl; read(); break; case 'e': cout << "Und Tsch\x81ss" << endl; break; default : cout << "Unzul\x84ssige Eingabe" << endl; } }while( eingabe!='e' ); return 0; } void read(void){ char rzeichen; do{ cout<< "READ-MEN\x9A:" << endl << endl << "c : (close) Datei schliessen" << endl << "r : (read) Datei lesen" << endl << "l : (lock) Datei zum Schreiben sperren" << endl << "Ihre Eingabe: " << endl; cin >> rzeichen; switch( rzeichen ){ case 'r': cout << "Datei wird gelesen" << endl; break; case 'l': write(); break; default: cout << "Unzul\x84ssige Eingabe" << endl; } }while( rzeichen!='c' ); } void write(void){ char wzeichen; do{ cout<< "WRITE-MEN\x9A:" << endl << "c : (close) Datei schliessen" << endl << "r : (read) Datei lesen" << endl << "w : (write) Datei schreiben" << endl << "u : (unlock) Datei freigeben" << endl << "Ihre Eingabe: " << endl; cin >> wzeichen; switch( wzeichen ){ case 'r': cout << "Datei wird gelesen" << endl; break; case 'w': cout << "Datei wird geschrieben" << endl; break; default: cout << "Unzul\x84ssige Eingabe" << endl; } }while( wzeichen!='c' && wzeichen!='u' ); }