Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.12.2012, 17:19

Switch/case und die do while schleife

Hallo, ich wollte heute zum üben ein C++ Programm schreiben wo ich im Menü dan z.b "a" oder "b" auswählen kann,
bei "a" kommt mein Programm rein und wenn dann der Code ausgeführt worden ist fragt er nach ob ich das wiederholen
möchte und gelange dan ins Menü.
Jetzt will ich aber wenn ich "b" drücke das das Programm beendet wird und er mich nicht fragt ob ich wiederholen will.
Ich weis das "while" als letztes drankommt" und er mich deswegen fragt ob er wiederholen soll, wenn ich "case b" aber
unter "while" stelle funktioniert das Programm nicht.
Ich weis auch das das etwas ganz bestimmtes im letzten block fehlt, aber komme nur nicht drauf.
Ich hoffe das ihr mir helfen könnt



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream.h>
#include <conio.h>


// Hauptprogramm

int main ()
{  
    char wiederholung,auswahl;


do
{
    
    cout << " Bitte waehlen Sie aus: " << endl;
    cout << " [a] " << endl;
    cout << " [b] " << endl;
    cin >> auswahl;
  

    
// Überprüfen der User-Eingabe
switch (auswahl)
{

      case ('a'):
      {    
                  cout << "Case a" << endl;      
      } break;

case ('b'):
      {    
           
          cout << "Auf wiedersehen" << endl;
           
      } break;
   

default:
        {
              
              cout <<"Falsche eingabe" << endl;
        
        }
}
        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
  } while (wiederholung == 'J' || wiederholung == 'j');
    
  
  getch ();
  return 0;     
}

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

08.12.2012, 17:23

Ein "if" um die letzte Ein-/Ausgabe herum wäre sicherlich nützlich.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

08.12.2012, 17:42

Danke, dass klappt soweit aber was mache ich mit dem "default" ?
der soll ja auch eine Fehlermeldung ausgeben wenn ich jetzt z.b "c" oder "d" eintippe.

if (auswahl=='a'||?????????????)

C-/C++-Quelltext

1
2
3
4
5
6
        if (auswahl=='a')
         
        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
  } while (wiederholung == 'J' || wiederholung == 'j');

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

08.12.2012, 18:49

Das stimmt doch soweit. Wenn du 'a' und 'A' haben möchtest, kannst du 2 case-Blöcke nacheinadner ohne Break schreiben.

C-/C++-Quelltext

1
2
3
4
case 'a':
case 'A':
    // Hier der Code der bei beiden ausgeführt werden soll
    break;


Bei default, kommt dann deine Fehlermeldung hin. Hast du oben doch auch schon.
Dein Code unten wird nicht funktionieren. Die Eingabe wird jedes mal gemacht. Achte auf Klammern bei if und else. Schreib es immer mit und niemals ohne. Gewöhn es dir einfach an.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

5

08.12.2012, 19:03

2. Sachen:

1.

Wenn ich es so hab

C-/C++-Quelltext

1
2
3
4
5
6
if (auswahl=='a')
         
        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
  } while (wiederholung == 'J' || wiederholung == 'j');


Dan kommt die meldung zum wiederholen bei "a" und bei "b" nicht, soweit so gut
aber wenn ich im menü "c" eingebe dan kommt "falsche eingabe" aber das wiederholen nicht und ich will
das es kommt, es soll überall erscheinen außer bei "b" und wenn ich "b" drücke und
dan nur "Auf wiedersehen" kommt und ich aber trozdem "j" eingebe komme ich zurück ins Menü.



2.

Wenn ich es so eingebe (mit klammern) dan gibt er mir eine fehlermeldung

C-/C++-Quelltext

1
2
3
4
5
6
7
if (auswahl=='a')
{
        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
  } while (wiederholung == 'J' || wiederholung == 'j');
}

FSA

Community-Fossil

  • Private Nachricht senden

6

08.12.2012, 19:06

Du kannst nicht im IF Block deinen While Block zu machen. Damit kappst du das Ende des IF Blocks ab. Das geht nicht.
Zu 1: Der komplette Code wäre jetzt ganz schön.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

7

08.12.2012, 19:27

Zu 1: Der komplette Code wäre jetzt ganz schön.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//************************************
// Programmname:  
// Klasse: 
// Datum: 
// Beschreibung: 
//************************************
#include <iostream.h>
#include <conio.h>


// Hauptprogramm

int main ()
{  
    char wiederholung,auswahl;


do
{
    
    cout << " Bitte waehlen Sie aus: " << endl;
    cout << " [a] " << endl;
    cout << " [b] " << endl;
    cin >> auswahl;
  

    
// Überprüfen der User-Eingabe
switch (auswahl)
{

      case ('a'):
      {    
                  cout << "Case a" << endl;      
      } break;

case ('b'):
      {    
           
          cout << "Auf wiedersehen" << endl;
           
      } break;
   

default:
        {
              
              cout <<"Falsche eingabe" << endl;
        
        }
}


        if (auswahl=='a')

        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
  } while (wiederholung == 'J' || wiederholung == 'j');







  
  getch ();
  return 0;     
}

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

8

08.12.2012, 19:35

Kleiner Tipp: Mit sinnvollen Tabstops kann man sich ein Klammerchaos, wie man es bei dir sieht, sparen und die Lesbarkeit des Codes wesentlich erhöhen.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

9

09.12.2012, 15:28

Also nochmal zusammengefast:

Ich will das überall außer bei "b" er mich fragt ob ich wiederholen will,
dass klappt auch im Moment aber nur teilweise er fragt mich bei "b" nicht
aber bei "default" auch nicht, also muss ich irgendwas machen damit er
mich auch bei "default" fragt ob ich wiederholen will.
Bei "b" fragt er mich zwar nicht aber das Programm beendet sich nicht,
wenn ich nach "b" einfach "j" eingabe wiederholt er trozdem.
Hab alles nochmal mit Tabstops geschrieben


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream.h>
#include <conio.h>


// Hauptprogramm

int main ()
{  
    char wiederholung,auswahl;


        do
   {
    
    cout << " Bitte waehlen Sie aus: " << endl;
    cout << " [a] " << endl;
    cout << " [b] " << endl;
    cin >> auswahl;
  

    
// Überprüfen der User-Eingabe
switch (auswahl)
       {

      case ('a'):
            {    
                 
                  cout << "Case a" << endl;    
                    
            } break;

case ('b'):
            {    
           
          cout << "Auf wiedersehen" << endl;
           
            } break;
   

default:
            {
              
              cout <<"Falsche eingabe" << endl;
        
            }
       }




if  (auswahl=='a')

        cout << "Druecken Sie die Taste 'J' zum Wiederholen" << endl;
        cin >> wiederholung; 
        
   } while (wiederholung == 'J' || wiederholung == 'j');
  







  
  getch ();
  return 0;     
}

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

09.12.2012, 15:39

Ich würde dir gern helfen. Allerdings versteh ich deine Erklärung nicht und deinen Code kann man auch nicht lesen.

Trotzdem ein kleiner Tipp: gerade als Anfänger sollte es zu jedem if auch ein Block(also zwei geschweifte Klammern) geben. Das ist bei dir nicht der Fall ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige