einfache Schleife
-
Hallo!
Ich habe jetzt Informatik und wir porgrammieren dort in C. Ich komme da an einer Aufgabe nicht weiter. Die Suche hat leider auch nichts ergeben auch wenn das keine schwere Aufgabe ist.
Ich habe ein Menü erstellt (in einer Dosbox) das soweit auch funktioniert. Allerdings soll man eine Schleife benutzen so dass nach jeder Eingabe der Benutzer wieder im Menü landet und zwar solange bis er das Programm beendet (Ja, eine Aufgabe für anfänger :)). Das Menü funktioniert und ich hab versucht das ganze in eine while oder do-while schleife zu packen. Wenn ich eine whileschleife draus mache dann flimmert das Menü über den Bildschrim da er es ständig neu berechnet, mache ich eine do-while schleife draus bekomme ich plötzlich den Fehler Syntaxfehler : Bezeichner 'cout'.
Hier der Code:
//Auswahlmenü #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double a=0,b=0,c=0,x=0,y=0,z=0,median=0,durch=0; int menü=0; cout <<"Praktikum 5 : Auswahlmenue"<<endl<<endl<<"Bitte einen Menuepunkt auswählen: "<<endl<<endl; cout <<"1. Variablen Eingabe"<<endl<<"2. Variablen absteigend sortieren"<<endl<<"3. Variablen aufsteigend sortieren"<<endl; cout <<"4. Durchschnitt der Variablen"<<endl<<"5. Median der Variablen"<<endl<<"6. Programm beenden"<<endl<<endl<<"Auswahl: "; cin >>menü; switch (menü) { case 1: cout <<"Variable 1 eingeben: "; cin >>a; cout <<endl<<endl<<"Variable 2 eingeben: "; cin >>b; cout <<endl<<endl<<"variable 3 eingeben: "; cin >>c; cout <<endl<<endl<<endl; break; case 2: cout <<endl<<endl<<"Variablen absteigend sortiert: "<<endl<<endl; if (a >= b) if (a >=c) if (b >= c) x=a,y=b,z=c; else x=a,y=c,z=b; else x=c,y=a,z=b; else if (b >= c) if (a >= c) x=b,y=a,z=c; else x=b,y=c,z=a; else x=c,y=b,z=a; cout <<setprecision(10)<<x<<" <= "<<setprecision(10)<<y<<" <= "<<setprecision(10)<<z<<endl<<endl; break; case 3: cout <<endl<<endl<<"Variablen aufsteigend sortiert: "<<endl<<endl; if (a >= b) if (a >=c) if (b >= c) x=a,y=b,z=c; else x=a,y=c,z=b; else x=c,y=a,z=b; else if (b >= c) if (a >= c) x=b,y=a,z=c; else x=b,y=c,z=a; else x=c,y=b,z=a; cout <<setprecision(10)<<x<<" <= "<<setprecision(10)<<y<<" <= "<<setprecision(10)<<z<<endl<<endl; break; case 4: durch=(a+b+c)/3; cout <<"Durchschnitt der Variablen: "<<durch<<endl<<endl; break; case 5: median=(a+b+c)/2; cout <<endl<<endl<<"Median der Variablen: "<<median<<endl<<endl; break; case 6: return 0; default: cout <<endl<<endl<<"Ungültige Eingabe, bitte Eingabe wiederholen"<<endl<<endl; } }
Welche Schleife benötige ich und wie wendet man sie richtig an? Ich hatte das do oder das while jeweils direkt nach der deklaration der variablen gesetzt.
Danke im voraus
Jeffe
-
Also ich hab jetzt noch ein bisschen rumprobiert und hab es doch geschafft. Ich hätte allerdings noch eine andere Frage:
Das Menü wird nun nach jeder eingabe direkt unter dem ergebnis der entsprechenden anfrgae zum erneuten eingabe eines menüpunkts dargestellt. Ich hätte aber lieber das das ergebnis auf einem ansonsten leeren bildschimr dargestellt wird und man dann nach druck einer beliebegen Taste wieder ins menü kommt was wieder in einem ansoinsten leeren fenster angezeigt wird. Hat da jemand eine Lösung?
nochmal danke im voraus
Jeffe
-
void clrscr() { COORD topLeft={0,0}; CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hOut,&csbi); FillConsoleOutputCharacter(hOut,' ',csbi.dwSize.X * csbi.dwSize.Y, topLeft,NULL); SetConsoleCursorPosition(hOut,topLeft); }
#include <conio.h> getch();
getch(); würd es für deine Lösung tun, ist aber glaube ich kein guter Programmierstil.