Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:12

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Fragen - Fehler!

Discussion on Fragen - Fehler! within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Ackhold's Avatar
 
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 0zahl2 0erg 0;
    
char opchAuswahlchBeenden;

    
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
Ackhold is offline  
Old 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.
MoepMeep is offline  
Old 12/21/2011, 20:06   #3
 
Ackhold's Avatar
 
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...
Ackhold is offline  
Old 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()
{

}
jacky919 is offline  
Thanks
1 User
Old 12/21/2011, 20:38   #5
 
Ackhold's Avatar
 
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
Danke Dir, werd' mich mal probieren!
Ackhold is offline  
Old 12/21/2011, 20:45   #6
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
Ich meinte das:
Code:
case '*':
Bin mir grad nicht mehr sicher, aber hab da was im hinterkopf ^^
MoepMeep is offline  
Old 12/21/2011, 20:49   #7
 
Ackhold's Avatar
 
elite*gold: 0
Join Date: Nov 2011
Posts: 17
Received Thanks: 2
Achso, ne - das klappt soweit, hatte da noch keine Probleme mit!
Ackhold is offline  
Old 12/22/2011, 15:14   #8
Administrator
 
Muddy Waters's Avatar
 
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.
Muddy Waters is offline  
Old 12/22/2011, 15:19   #9
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
blockklammern in cases sind durchaus üblich.
richtige einrückung allerdings auch^^
Dr. Coxxy is offline  
Old 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.
MoepMeep is offline  
Old 12/23/2011, 17:09   #11
 
Ackhold's Avatar
 
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.
Ackhold is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.