|
You last visited: Today at 10:12
Advertisement
Fragen - Fehler!
Discussion on Fragen - Fehler! within the C/C++ forum part of the Coders Den category.
12/21/2011, 19:38
|
#1
|
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
|
Fragen - Fehler!
Tag,
ich bin ziemlich neu in C++ - ich hab' hier 'nen kleinen, erweiterten, Taschenrechner, - der eigentlich funktioniert, im Moment ist's nur nen Klammer-Problem, welches ich aber noch selber gelöst bekomm'.
Mir geht's aber um folgendes:
Ich lern' gerade Switch, Case etc. - ich würde gerne wissen, ob man "verschachtelte" Switch Anweisungen machen kann - mein Code sieht so aus:
PHP Code:
# include <iostream> # include <windows.h> using namespace std; int main() {
double zahl1 = 0, zahl2 = 0, erg = 0; char op, chAuswahl, chBeenden;
cout << "Dies ist ein Taschenrechner, der Plus, Minus, Mal, Geteilt und Fakultät rechnen kann!" <<endl; cout << "Wenn Sie Hilfe beim bedienen benötigen, drücken Sie bitte [H]!" <<endl; cout << "Wenn Sie den Taschenrechner starten wollen, drücken Sie bitte [S]!" <<endl; cout << "Aushwal bitte jetzt treffen!" <<endl; cin >> chAuswahl; /* switch (chAuswahl) { case 's': case 'S': */
do {
system ("cls");
cout << "Bitte geben Sie Ihre Rechnung ein!" <<endl; cout << "Rechnung: " <<endl; cin >> zahl1 >> op >> zahl2;
switch (op) { //{ case '+': { cout <<"Einen Moment, ich rechne..." <<endl; Sleep (1000); cout <<"Das Ergebnis lautet: " << zahl1+zahl2 <<endl; }break;
case '-': { cout <<"Einen Moment, ich rechne..." <<endl; Sleep (1000); cout <<"Das Ergebnis lautet: " << zahl1-zahl2 <<endl; }break;
case '*': { cout <<"Einen Moment, ich rechne..." <<endl; Sleep (1000); cout <<"Das Ergebnis lautet: " << zahl1*zahl2 <<endl; }break;
case '/': { cout <<"Einen Moment, ich rechne..." <<endl; Sleep (1000); cout <<"Das Ergebnis lautet: " << zahl1/zahl2 <<endl; }break; case '!':
{ erg=zahl1; do { zahl1--; erg=erg*zahl1; cout << "Einen Moment, ich rechne..."<<endl; Sleep (1000); cout << "Das Ergebnis lautet: << Zahl1: "<< zahl1 <<endl; } while(zahl1!=1); }break; default: cout<<"Falsches Rechenzeichen!"<<endl; { Sleep (10000); system("cls"); } } while (erg >= 0); //}break; } }
Wär' nett wenn mir wer helfen kann - danke!
Gruß,
Ackhold
|
|
|
12/21/2011, 19:51
|
#2
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Natürlich kannst du eine switch-case anweisung verschachteln, wieso auch nicht?
Übrigens, das * könnte probleme machen, bin mir grade nicht ganz sicher.
|
|
|
12/21/2011, 20:06
|
#3
|
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
|
Meinst Du das '*' zum auskommentieren? Ist doch ganz normales auskommentieren...
Wie stell' ich das denn am besten an?
Will z.B eine Art Menu einbauen:
Als erstes kann man:
- Taschenrechner auswählen
- Hilfe Menu auswählen
- Beenden
Und wenn man dann z.B Hilfe ausgewählt hat, soll man in dieser Anweisung wiederum Spiel starten und Beenden auswählen könn' - steh' da aber 'nen bisschen auf'm Schlauch...
|
|
|
12/21/2011, 20:27
|
#4
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Grundgerüst:
Code:
bool closed = false;
while(!closed)
{
cout << "Auswahl: ";
int auswahl;
cin >> auswahl;
switch(auswahl)
{
case 1:
{Taschenrechner();}
break;
case 2:
{closed = true;}
break;
}
void Taschenrechner()
{
}
|
|
|
12/21/2011, 20:38
|
#5
|
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
|
Danke Dir, werd' mich mal probieren!
|
|
|
12/21/2011, 20:45
|
#6
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Ich meinte das:
Bin mir grad nicht mehr sicher, aber hab da was im hinterkopf ^^
|
|
|
12/21/2011, 20:49
|
#7
|
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
|
Achso, ne - das klappt soweit, hatte da noch keine Probleme mit!
|
|
|
12/22/2011, 15:14
|
#8
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Nur mal so am Rande:
Du brauchst keine Blockklammern in den einzelnen cases verwenden, das ist so eigentlich auch nicht üblich. Eine switch-Anweisung ist prinzipiell eine bedingte Sprunganweisung. Sprich sofern dein case mit der zu prüfenden Konstanten identisch ist, findet ein Sprung zum entsprechenden case statt und sämtlicher nachfolgender Code im Anweisungsblock der switch-Anweisung wird ausgeführt - also auch alle nachfolgenden cases. Letzteres ist auch der Grund, warum am Ende eines cases oft eine break-Anweisung verwendet wird.
Eine Blockklammer macht daher keinen Sinn, weil sowieso sämtlicher Code bis zur break-Anweisung ausgeführt wird.
Stattdessen solltest du lieber darauf achten, dass du stets sauber einrückst. Das passt nämlich in deinem Beispiel noch nicht so ganz und führt zu unleserlichem Code, mit dem du dir selber das Leben unnötig schwer machst. 
Ich weiß, dass das anfangs alles etwas schwierig und ungewohnt ist, mein Professor hat mich damit auch ziemlich genervt, als ich C++ lernen durfte. Aber spätestens wenn du deinen eigenen Code nach einigen Wochen selber liest, wirst du für alles dankbar sein, was die Lesbarkeit irgendwie erhöht.
|
|
|
12/22/2011, 15:19
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
blockklammern in cases sind durchaus üblich.
richtige einrückung allerdings auch^^
|
|
|
12/22/2011, 15:49
|
#10
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Die Klammern können dort durchaus einen Sinn haben, in den meisten Fällen sind sie allerdins unnötig.
|
|
|
12/23/2011, 17:09
|
#11
|
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
|
Ich hab' es mit den Blockklammern so gelernt...da legt mein Professor eigentlich auch wert drauf.
|
|
|
 |
Similar Threads
|
[Problem]npc_talk.quest fehler + 2011SF Fragen
11/09/2011 - Metin2 Private Server - 2 Replies
Hallo,
Erstmal habe ich eine Frage zu Howans Serverfiles (2011). Ich habe einen Hamachi Server mit der Festplatte von Howan gemacht. Ich habe ein paar Dinge bemerkt, die auf 2011er Files eigentlich nicht so sein sollten, wie sie sind.
1. Der Lagerverwalter, spricht mich in einer mir fremden Sprachen an (koreanisch,chinesisch,japanisch) oder so. Er schickt mich zur Gemi, dem Rüstungshändler sowie zum Waffenhändler die mich auch in einer anderen Sprache ansprechen. Wieso ist das so, bzw. wo...
|
Fragen/Fehler-Metin2-2010-Client usw.
04/21/2011 - Metin2 Private Server - 1 Replies
Also habe 3 Probleme ...:S
1:Sobald ich egal was ich schreibe zeigt er mir so an " NAME: " und dann nix und das gleiche ist bei GM Codes.
2:Kann mit Profi94-SF Hamachi auf FreeBSD installieren? Weil mir mir kommt bei make install clean #ERROR.
3: Ist in dem 2010-Client von Crank Levelanzeige (Clientside) schon eingebaut? Weil habe sie Serverside schon eingebaut benutze 2010 Client aber funkt net:D
LG ---
|
xBox 360 .. Fragen Fragen und nochmal Fragen !
01/05/2011 - Consoles - 12 Replies
^Tach elitepvpers....
Also ich hab ne xBox 360 (was glaube ich viele haben^^)
1.Frage : Wie findet ihr (die mit der xBox306) das neue Uptade
2.Frage : Was ist euer lieblingsspiel???
1.Antwort^^: Update sieht eig. ganz gut aus ...Trotzdem is das orginal am besten ^^
|
OX Fragen startet nicht Fehler!
12/03/2009 - Metin2 PServer Guides & Strategies - 4 Replies
Moin Comi
Also ich habe in dem server von meinem kumpel in file server die ganzen ox event files rein getan damit die blume und die question übersetz sind naja geht auch alles nunja gestern ging fragen usw noch jetzt starte ich das ox geh von uriel dort hinein hole die blume und dann mache ich erstmal zugang schliesen dann klickt ich wieder auf OX Event und dann auf Fragen dann kommt die meldung Das Event läuft nichma! irwie komisch pls helft mir THX ist dann verdient mfg painsnatcher
|
All times are GMT +1. The time now is 10:13.
|
|