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): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Switch case C++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
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:
#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'):


        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;


            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;







    }
}



Jetzt stimmte es soweit denke ich.


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

DA habe ich im moment keine idee was ich machen kann.

Hast du irgendwie tipps für mich?
13.04.2013 20:56
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

Eine Endlosschleife:
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:
#include <iostream>

using namespace std;

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

	while(true)
	{
		switch(Auswahl)
		{
		case 'A':
		case 'a':
			cout << "1. Zahl: ";
			cin >> x;
			cout << "2. Zahl: ";
			cin >> y;
			cout << "3. Zahl: ";
			cin >> z;
			break;
//...
		case 'F':
		case 'f':
			return 0;
//evtl noch dafault
		}

		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;
	}
}

Für heute bin ich dann mal weg Wink

__________________
Syntax Highlighting fürs Board (Link)
13.04.2013 21:01 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

Aber mit while true macht er das zahlen einlesen ja auch irgendwie unendlich
mal , da stimmt doch was nicht oder?
13.04.2013 21:16
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

Es beendet sich eben dann, wenn man 'f' bzw. 'F' eingibt, da die return-Anweisung die Schleife dann einfach abbricht.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
13.04.2013 21:31 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader 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:
96:
97:
98:
99:
#include <iostream>

using namespace std;

int main()
{

    char Auswahl = 'A';
     Auswahl = 'B';
    Auswahl = 'C';
     Auswahl = 'D';
     Auswahl = 'E';


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

    while(true){
    switch(Auswahl){


        case('A'):

        case('a'):


        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;


            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;


    }

    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;







    }
} 


Mein Programm sieht so aus .

Aber wenn ich c drücke sortiert er leider die Zahlen nicht.

Warum passiert das?
13.04.2013 22:33
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

code:
1:
2:
3:
4:
int a = x_sort; 
if( a > y_sort && y_sort < z_sort && z_sort > a ){
    a = y_sort; 
}


Erwartest du wirklich, dass eine Logik, welche die eingegebenen Zahlen nichtmal verwendet, funktioniert?

Da du C++-Methoden zum sortieren wohl nicht verwenden darfst/kannst, solltest du dir erstmal überlegen: Wie kannst du drei Zahlen algorithmisch sortieren?

Übrigens: Offenbar ist "case('d')" zwar gültige Syntax, aber untypisch. Man schreibt für die Fälle eigentlich nur "case 'd'", also ohne Klammern.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Airblader: 13.04.2013 23:16.

13.04.2013 23:14 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader 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 mal versucht so zu sortieren , aber es funktioniert immer nochnicht:

#include <iostream>

using namespace std;

int main()
{

char Auswahl = 'A';
Auswahl = 'B';
Auswahl = 'C';
Auswahl = 'D';
Auswahl = 'E';


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

while(true){
switch(Auswahl){


case('A'):

case('a'):


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'):


cout << "1 Zahl" << endl;

cin >> x_sort;

cout << "2 Zahl" << endl;

cin >> y_sort;

cout << "3 Zahl" << endl;

cin >> z_sort;



if( x_sort > y_sort ){

x_sort =y_sort;
}

if(y_sort > z_sort && x_sort > z_sort){

y_sort = z_sort;


}

cout << z_sort << endl;





break;

case('D'):

case('d'):

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

break;


}

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;







}
}

Was mache ich nun?
14.04.2013 01:19
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

Zitat:
Original von profi
Was mache ich nun?


Code-Tags verwenden. Augenzwinkern

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
14.04.2013 01:23 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
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

Da der Tag sich dem Ende zuneight, möchte ich (ausnahmsweise*) mal nicht so sein. Das ist also deine Logik:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
cout << "1 Zahl" << endl;
cin >> x_sort;
cout << "2 Zahl" << endl;
cin >> y_sort;
cout << "3 Zahl" << endl;
cin >> z_sort;

if( x_sort > y_sort ) {
    x_sort =y_sort;
}

if( y_sort > z_sort && x_sort > z_sort ) {
    y_sort = z_sort;
}

cout << z_sort << endl;


Der erste Block widerspricht gleich mal der Aufgabenstellung. Du sollst nicht Zahlen sortieren, die neu eingegeben werden, sondern die Zahlen, die zuvor eingegeben wurden (namentlich x, y und z).

Die Logik danach ist auch eher krumm. Ein Tipp: Wenn du dir einen Algorithmus überlegst, dann überprüfe ihn mit Zahlbeispielen. Auch nochmal gründlich über das Geschriebene nachdenken hilft oft – in deiner Logik wird der Wert von x_sort zum Beispiel ersatzlos überschrieben. Wenn man drei Zahlen sortieren will und eine unwiderruflich überschreibt, riecht das nicht nach einem Fehler? Augenzwinkern

Gehen wir also mal davon aus, dass der Benutzer x, y und z eingegeben hat und wir diese Zahlen aufsteigend sortieren wollen. Gehen wir auch mal davon aus, dass wir eine Funktion min(a, b, c) und max(a, b, c) haben (was sie jeweils tun sollte klar sein). Dann können wir wie folgt sortieren:

code:
1:
2:
3:
x_sort = min(x, y, z);
z_sort = max(x, y, z);
y_sort = x + y + z - x_sort - z_sort;


An der Stelle ist es essentiell, dass du dir die Zeit nimmst zu verstehen, wieso das klappt.

Supi – die Zahlen sind sortiert! Jetzt haben wir nur noch das Problem, dass wir diese min- und max-Funktion brauchen. Da ich davon ausgehe, dass ihr die vordefinierten Funktionen nicht nutzen dürft, müssen wir uns sowas eben selber basteln. Sagen wir mal, wir wollen min(x,y) bestimmen und in x_sort speichern. Das könnte so gehen:

code:
1:
2:
3:
4:
5:
if( x < y ) {
    x_sort = x;
} else {
    x_sort = y;
}


Ich überlasse es dir, dies auf drei Zahlen (für min(x, y, z)) auszuweiten, denn das brauchen wir schließlich. Natürlich gibt es auch andere Wege, die Zahlen zu sortieren.

*) In Zukunft bitte auf die korrekte Darstellung achten. Wer will, dass andere sich Zeit nehmen, zu helfen, sollte sich die Zeit nehmen, die Frage vernünftig zu stellen. Augenzwinkern

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
14.04.2013 02:44 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Switch case C++