Schleife zwischen zwei Funktionen

paddymann

Mitglied
Hi!
Ich habe ein Problem mit einer Schleifenkostruktion. Ich möchte, dass die Programmausführung aus der Fuktion int main() an den Anfang der Funktion int menu() springt. Das klappt bei mir weder mit einer do...while Schleife wie auch mit der "goto"-Anweisung ( ich weiss dass man das eigentlich nicht benutzt) nicht. Kann mir da mla einer helfen
Und wo ich grad schonmal dabei bin würd ich auch gern ncoh was zweites Fragen: Wofür steht hinter manchen Anweisungen "endl" Ohne scheint das bei mir immer genauso gut zu klappen.
Danke für eure Antworten.
 
moin


Herr Mechaniker mein Auto ist kaputt, ich werde es ihnen aber nicht zeigen, trotzdem will ich das sie mir sagen woran es liegt.

Das endl bewirkt das der Cursor in eine neue Zeile springt.


mfg
umbrasaxum
 
moin


Damit wollte ich darauf hinweisen das dir keinen einen Fehler in deinem Code sagen kann, wenn du deinen Code nciht zeigst!


mfg
umbrasaxum
 
Ähm das war ironisch gemeint!
Du musst uns schon zeigen wobei wir dir helfen sollen, so wie die aktuelle Fragestellung ist kann dir keiner helfen selbst wenn man es will nicht !
Also Quellcodeausschnitte posten, Compiler? OS?
 
Hier mein Quellcode. Ein Rechner!(noch ohne Kommentare)

#include <iostream>
#include <math.h>

using namespace std;

int menu() {

int i;

loop:


cout << "\n\t<---------Taschenrechner----------->"
<< "\n\t(1) Addieren"
<< "\n\t(2) Subtrahieren"
<< "\n\t(3) Multiplizieren"
<< "\n\t(4) Dividieren"
<< "\n\t(5) zum Quadrat nehmen"
<< "\n\t(6) Quadrat-Wurzel ziehen"
<< "\n\t<----------------------------------->";
cin >> i;

while ((i < 1)||(i > 6))
{
cout <<"\n\n\t\tFALSCHE EINGABE";
goto loop;
}

return i;
}

int main() {

bool quit=false;
int schluss;
long double a, b;
int x;
int aus=menu();


do {
switch (aus) {
case 1:
case 2:
case 3:
case 4:

cout << "\n\n\tBitte erste Zahl eingeben ";
cin >> a;
cout << "\n\n\tBitte zweite Zahl eingeben ";
cin >> b;
switch(aus) {

case 1: cout << "\n\t" << a << " + " << b << " = " << a + b << endl; break;
case 2: cout << "\n\t" << a << " - " << b << " = " << a - b << endl; break;
case 3: cout << "\n\t" << a << " * " << b << " = " << a * b << endl; break;
case 4: cout << "\n\t" << a << " / " << b << " = " << a / b << endl; break;
}
quit=true;
break;
case 5:
case 6:
cout << "\n\n\tBitte Zahl eingeben ";
cin >> a;
switch (aus) {


case 5: cout << "\n\t" << a << " zum quadrat ist = " << a*a << endl; break;
case 6: cout << "\n\tDie Wurzel von " << a << " = " << sqrt(a) << endl; break;


}
quit=true;
break;
}


}while (!quit);

loop2:
cout <<"\n(1)Programm beenden\n\toder\n(2)eine weitere Aufgabe rechnen?";
cin >> x;

switch (x)
{
case 1: cout << "\n\tBeliebiges Zeichen eingeben und dann ENTER zum beenden druecken.";
cin >> schluss;
break;
case 2:Hier will ich jetz zur menu() Funktion
break;
default: cout << "FALSCHE EINGABE";
goto loop2;
break;
}

return 0;
}
 
Zuletzt bearbeitet:
moin


Hab jetzt grad keine Lust das alles durchzugucken, aber es fängt schon mit menu an.
Wenn du die Schleife ein bsichen früher beginnst kannst du goto vermeiden:
Code:
int menu() {

int i=0;

while ((i < 1)||(i > 6))
{
cout << "\n\t<---------Taschenrechner----------->"
<< "\n\t(1) Addieren"
<< "\n\t(2) Subtrahieren"
<< "\n\t(3) Multiplizieren"
<< "\n\t(4) Dividieren"
<< "\n\t(5) zum Quadrat nehmen"
<< "\n\t(6) Quadrat-Wurzel ziehen"
<< "\n\t<----------------------------------->";
cin >> i;

cout <<"\n\n\t\tFALSCHE EINGABE";
}


mfg
umbrasaxum
 
umbrasaxum hat gesagt.:
moin
Das endl bewirkt das der Cursor in eine neue Zeile springt.

Es bewirkt ausserdem im Gegensatz zu '\n' ein Leeren des Buffers. Also eine Kombination aus Newline und Flush. Das ist auch nicht ganz unwichtig.
 
Zurück