Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Switch case C++ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Switch case C++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
profi
unregistriert
Switch case C++ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo leute ich stecke gerade bei einer Aufgabe fest:

Es ist ein Programm für ein Menue zu erstellen, wo ein Anwender wiederholt aus einer Reihe von Aktionen auswählen kann. In dem Programm soll - ein Menue zur Auswahl der Aktionen angezeigt werden - der Anwender per geeigneter Eingabe eine der Aktionen auswählen - diese gewählte Aktion durchgeführt werden. Dies wird solange wiederholt, bis der Anwender per geeigneter Eingabe entscheidet, dass das Programm beendet werden soll.
Folgende Aktionen sollen zur Auswahl stehen und mittels switch realisiert werden: I. 3 neue Zahlen einlesen. II. Die zuletzt mit I) eingelesenen Zahlen ausgeben (Reihenfolge wie bei der Eingabe). III. Die zuletzt mit I) eingelesenen Zahlen absteigend sortiert ausgeben. IV. Den Mittelwert der 3 zuletzt mit I) eingelesenen Zahlen ausgeben. V. Den Median der 3 zuletzt mit I) eingelesenen Zahlen ausgeben. Hinweis: der Median ist hier der mittlere Wert der Zahlen in sortierter Reihenfolge VI. Das Programm beenden.

Mein programm sieht im moment so aus:

#include <iostream>

using namespace std;

int main()
{

char Auswahl;

cout<< "Startmenue" << endl;

cout<< "(A)Es sollen 3 Zahlen eingelesen werden" <<endl;

cout<< "(B)Zuletzt eingelesene Zahl ausgeben" <<endl;

cout << "(C) Absteigend sortiert" << endl;

cout << "(D) Mittelwert" << endl;

cout << "(E) Beenden" << endl;

switch(Auswahl){

case('A');

case('a');

int a = x;

int b = y;

int c = z;

cout << "1 Zahl" << endl;

cin >> x;

cout << "2 Zahl" << endl;

cin >> y;

cout << "3 Zahl" << endl;

cin >> z;

case('B');

case('b');

cout << x << " " << y << " " << z << endl;





}
}

Mein compiler zeigt mir den fehler an :

x is not declared in this scope.

Kann mir jemand helfen?

Meine Ideen:
gepostet
13.04.2013 19:17
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Deine Fehlermeldung besagt, dass du schreibst int a = x;
was ist überhaupt x, das hast du vorher noch nie verwendet, noch nichtmal gesagt, dass das auch ein int ist.

Außerdem:
-Du fragst Auswahl ab, ohne es eingelesen zu haben
-case 'A': //da muss ein Doppelpunkt hin, kein Semikolon

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 19:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Oh man jetzt funktioniert es:

#include <iostream>

using namespace std;

int main()
{

char Auswahl;

cout<< "Startmenue" << endl;

cout<< "(A)Es sollen 3 Zahlen eingelesen werden" <<endl;

cout<< "(B)Zuletzt eingelesene Zahl ausgeben" <<endl;

cout << "(C) Absteigend sortiert" << endl;

cout << "(D) Mittelwert" << endl;

cout << "(E) Beenden" << endl;

switch(Auswahl){

case('A'):

case('a'):

int x;

int y;

int z;

cout << "1 Zahl" << endl;

cin >> x;

cout << "2 Zahl" << endl;

cin >> y;

cout << "3 Zahl" << endl;

cin >> z;

case('B'):

case('b'):

cout << x << " " << y << " " << z << endl;





}
}


Stimmt es so?
13.04.2013 19:30
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sieht zumindest schon besser aus, beim Ausführen kiriege ich aber immer noch eine Fehlermeldung:
Zitat:
Run-Time Check Failure #3 - The variable 'Auswahl' is being used without being initialized.

Schreibe mal vor das switch: cin >> Auswahl;

Weitere Punkte:
-int x, y, z; sollten oberhalb des switch definiert werden
- am Ende eines Blocks bei switch kommt das Wort break

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 19:36 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

#include <iostream>

using namespace std;

int main()
{

char Auswahl;

cout<< "Startmenue" << endl;

cout<< "(A)Es sollen 3 Zahlen eingelesen werden" <<endl;

cout<< "(B)Zuletzt eingelesene Zahl ausgeben" <<endl;

cout << "(C) Absteigend sortiert" << endl;

cout << "(D) Mittelwert" << endl;

cout << "(E) Beenden" << endl;

cin >> Auswahl;

switch(Auswahl){

case('A'):

case('a'):

int x;

int y;

int z;

cout << "1 Zahl" << endl;

cin >> x;

cout << "2 Zahl" << endl;

cin >> y;

cout << "3 Zahl" << endl;

cin >> z;

break;

case('B'):

case('b'):

cout << x << " " << y << " " << z << endl;

break;

case('C'):

case('c'):

int x;
int y;
int z;

int x = a;

if( a > y && y < z && z > a ){

a =y;
}

cout << y << " " << x << " " << z;

break;





}
}


Ist mein sortieren bei case c richtig?
13.04.2013 19:48
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
int x;
int y;
int z;

int x = a;

sollte wohl heißen int a = x;

Du schreibst bei case A und bei case C:
int x; int y; int z;
Du kannst du Variablen nur einmal verwenden, und selbst wenn es ginge, würdest du in C nicht mehr mit den Werten aus A arbeiten.

Versuche mal deinen Codeanfang (Variablen brauchst du danach keine mehr zu definieren)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
#include <iostream>

using namespace std;

int main()
{
	char Auswahl;
	int x=0,y=0,z=0, x_sort=0, y_sort=0,z_sort=0;

	cout << "Startmenue" << endl;
	cout << "(A) Es sollen 3 Zahlen eingelesen werden" <<endl;
	cout << "(B) Zuletzt eingelesene Zahl ausgeben" <<endl;
	cout << "(C) Absteigend sortiert" << endl;
	cout << "(D) Mittelwert" << endl;
	cout << "(E) Median" << endl;
	cout << "(F) Beenden" << endl;
	cin >> Auswahl;

	switch(Auswahl)
//...


__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 19:57 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

int x=0,y=0,z=0, x_sort=0, y_sort=0,z_sort=0;

Soll ich das jetzt am Anfang einbauen oder wie?

Aber warum setze ich die int = 0 ?

Das verstehe ich nicht.

Und was bewirkt das y_sort usw?
13.04.2013 20:04
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja, das soll an den Anfang.
Man kann nicht sicher sein, dass der Nutzer zuerst Zahlen einliest, bevor er sie wieder ausgeben lässt(können wir später noch ändern), deshalb bringe ich sie erst mal auf einen definierten Startwert.

Das y_sort habe ich gemacht, weil du die Zahlen später noch sortieren sollst, da kommt dann der mittlere Wert rein, in x_sort der größte, in z_sort der kleinste.

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 20:09 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habs jetzt umgekehrt gemacht .

Ich hab jetzt versucht in y den kleinsten wert zu stellen .

Würde das so gehen ?

#include <iostream>

using namespace std;

int main()
{

char Auswahl;

cout<< "Startmenue" << endl;

cout<< "(A)Es sollen 3 Zahlen eingelesen werden" <<endl;

cout<< "(B)Zuletzt eingelesene Zahl ausgeben" <<endl;

cout << "(C) Absteigend sortiert" << endl;

cout << "(D) Mittelwert" << endl;

cout << "(E) Beenden" << endl;

cin >> Auswahl;

int x=0,y=0,z=0, x_sort=0, y_sort=0,z_sort=0;

switch(Auswahl){


case('A'):

case('a'):

int x;

int y;

int z;

cout << "1 Zahl" << endl;

cin >> x;

cout << "2 Zahl" << endl;

cin >> y;

cout << "3 Zahl" << endl;

cin >> z;

break;

case('B'):

case('b'):

cout << x << " " << y << " " << z << endl;

break;

case('C'):

case('c'):



int x_sort = a;

if( a > y_sort && y_sort < z_sort && z_sort > a ){

a =y_sort;
}

cout << y_sort << " " << x_sort << " " << z_sort;

break;





}
}

Aber mir wird hier ein Fehler angezeigt:

int x_sort = a;

Warum das verstehe ich immer noch nicht?
13.04.2013 20:18
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ganz am Rande: Setze deine Code-Snippets bitte in entspr. code-Tags, damit man sie auch bequem lesen kann und die (hoffentlich vorhandene) Formatierung erhalten bleibt.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
13.04.2013 20:23 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In case A sollst du doch keine Variablen mehr definieren, das ist doch schon davor passiert.

In case C willst du ein a benutzen, das du nirgendwo definiert hast.
Gleichzeitig gibt es aber schon ein y_sort.
Der Aufbau ist immer so:
Datentyp NeuerName = EtwasBekanntes;
also z.B. int a = y_sort;
oder char Auswahl = 'A';

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 20:24 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie mache ich das in code tags?
13.04.2013 20:24
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Code einschließen mit [_code] ... [_/code] (der Unterstrich muss raus)

code:
1:
2:
Zeile 1
Zeile 2


Klicke bei meinem Beitrag auf zitieren, dann siehst du, wie ich es gemacht habe.

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 20:28 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
profi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
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:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
#include <iostream>

using namespace std;

int main()
{

    char Auswahl;

    cout<< "Startmenue" << endl;

    cout<< "(A)Es sollen 3 Zahlen eingelesen werden" <<endl;

    cout<< "(B)Zuletzt eingelesene Zahl ausgeben" <<endl;

    cout << "(C) Absteigend sortiert" << endl;

    cout << "(D) Mittelwert" << endl;

    cout << "(E) Beenden"  << endl;

    cin >> Auswahl;

    int x=0,y=0,z=0, x_sort=0, y_sort=0,z_sort=0;

    switch(Auswahl){


        case('A'):

        case('a'):

        int  x;

        int  y;

        int z;

        cout << "1 Zahl" << endl;

        cin >> x;

        cout << "2 Zahl" << endl;

        cin >> y;

        cout << "3 Zahl" << endl;

        cin >> z;

        break;

        case('B'):

        case('b'):

        cout <<  x  << " " << y << " " << z << endl;

        break;

        case('C'):

        case('c'):



         int a = x_sort;


            if( a > y_sort && y_sort < z_sort && z_sort > a  ){

                a =y_sort;
            }

            cout << y_sort  <<  " "  << a  << " " << z_sort;

            break;


           case('D'):

           case( 'd'):

           cout << " Mittelwert" << " " << (x_sort+y_sort+z_sort)/3  <<endl;

           break;







    }
}


SO sieht mein code jetzt aus .

Leider wird mir bei case d wieder ein fehler am anfang angezeigt.

Aber ich habe noch eine frage was kann ich denn jetzt machen das wenn ich z.B c eingebe , das dann die eingelesenen zahlen sortiert angezeigt werden ?
13.04.2013 20:38
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Der Fehler ist schon bei case C, wie schon beschrieben
Zitat:
In case C willst du ein a benutzen, das du nirgendwo definiert hast.


Die Frage ist erstmal, was du machen kannst, damit die eingelesenen Zahlen überhaupt verwendet werden, bisher beendet das Programm nach einmaligem Einlesen der Zahlen.

Und wie gesagt, die Variablen haben wir alle schon definiert, bitte lösche die Zeilen 33-37 sowie 67 aus deinem Code. Und die Leerzeilen könntest du auch entfernen, dann passt das Programm auch ohne Scrollen auf den Monitor.

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 20:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Switch case C++