drei integer Zahlen sortiren



  • Es läuft.

    Aufgabe und Vorgaben: Schreiben sie ein Programm das den Benutzer
    auffordert, drei Integer-Werte einzugeben, und dann die Werte in numerischer Reihenfolge getrennt durch Komma ausgibt aber nur mit Operatoren !
    Mit Copy & Paste und trial and error zur Lösung zukommen ist nicht der beste Weg, hat mir aber trotzdem geholfen.
    Doch gefallen tut mir der Code nicht, es sieht so zusammen geschustert aus.
    Die Lösung für doppelte Zahleneingabe verstehe ich schon aber glücklich bin ich damit nicht.
    Geht es besser; bei der Aufgabenstellung ?
    Dank für die Hilfe

    #include<iostream>
    using namespace std;
    
    int main()
    {
        cout << "Bitte geben Sie drei int - Zahle ein \n" ;
        int a,b,c;
        cin >> a >> b >> c;
    
        if (a > b || a==b)
            {
                if (a > c|| a==c)
                {
                    if (b > c|| b==c)
                        {
                            cout << a << " , " << b << " , " << c <<'\n';
                        }
                    if (c > b)
                        {
                            cout << a << " , " << c << " , " << b <<'\n';
                        }
                }
    
                if (c > a)
                    {
                        cout << c << " , " << a << " , " << b <<'\n';
                    }
            }
    
            else
                if (b > a|| b==a)
                {
                    if (b > c|| b==c)
                    {
                        if (a > c)
                            {
                                cout << b << " , " << a << " , " << c <<'\n';
                            }
                        if (c > a|| c==a)
                            {
                                cout << b << " , " << c << " , " << a <<'\n';
                            }
                    }
                    if (c > b)
                        {
                            cout << c << " , " << b << " , " << a <<'\n';
                        }
                }
    
            else
                if (c > a)
                {
                    if (c > b)
                        {
                            if (a > b)
                                {
                                    cout << c << " , " << a << " , " << b <<'\n';
                                }
                            if (b > a)
                                {
                                    cout << c << " , " << b << " , " << a <<'\n';
                                }
                        }
                    if (b > c)
                        {
                            cout << b << " , " << c << " , " << a <<'\n';
                        }
                }
    
    }
    


  • Willst Du uns verarschen oder leidest Du unter Alzheimer?

    http://www.c-plusplus.net/forum/328036


  • Mod

    mgaeckler schrieb:

    Willst Du uns verarschen oder leidest Du unter Alzheimer?

    http://www.c-plusplus.net/forum/328036

    Wenn ich mir den verlinkten Thread ansehe, war der wirklich nicht sonderlich hilfreich. Das liegt natürlich an der Fragestellung, die sehr zu trolligen Antworten verleitet, weil sie gegen jede Netiquette verstößt.

    Ich vermute, dieser Thread wird ähnlich enden, ich lass ihn aber trotzdem vorerst offen. Im schlimmsten Fall wird's amüsant. Aber ansonsten fühle ich mich nicht sonderlich motiviert, eine Antwort auf die Frage zu geben, wenn der Fragesteller so vor sich hin stammelt, das man jeden zweiten Satz nicht verstehen kann. Bloß noch die obligatorische, mathematisch korrekte Antwort:

    juhu123 schrieb:

    Geht es besser; bei der Aufgabenstellung ?

    Ja. Sehr sogar.



  • juhu123 schrieb:

    Geht es besser; bei der Aufgabenstellung?

    Weiß nicht. Was heißt da "aber nur mit Operatoren"?

    Zunächst mal gibt es nur 6 mögliche Reihenfolgen. Also müßten auch 6 Fälle im Code reichen, Du hast deren aber 9.

    #include<iostream>
    using namespace std;
    
    int main(){
        cout << "Bitte geben Sie drei int - Zahle ein \n" ;
        int a,b,c;
        cin >> a >> b >> c;
    
    	if(a<=b){
    		if(a<=c){
    			cout<<a<<' ';
    			if(b<=c)
    				cout<<b<<' '<<c;
    			else
    				cout<<c<<' '<<b;
    		}
    		else//c<=a
    			cout<<c<<' '<<a<<' '<<b;
    	}
    	else{//b<=a
    		if(b<=c){
    			cout<<b<<' ';
    			if(a<=c)
    				cout<<a<<' '<<c;
    			else
    				cout<<c<<' '<<a;
    		}
    		else//c<=b
    			cout<<c<<' '<<b<<' '<<a;
    	}
    	cout<<'\n';
    }
    


  • Bashar hat Dir in dem anderen Thread schon gesagt: zeichne Dir einen "Entscheidungsbaum" auf.
    Also eine Entscheidung oben und dann nach links und nach rechts, wenn die Bedingung wahr bzw. falsch ist. Dann die nächste Entscheidung usw.

    Die Aufgabe hat weniger mit programmieren zu tun, als vielmehr mit Logik.


  • Mod

    Furble Wurble schrieb:

    Die Aufgabe hat weniger mit programmieren zu tun, als vielmehr mit Logik.

    Wenn du dir Aufgabe verstanden hast, dann erklär mal bitte. Ich kann mit dem Operatorgefasel in beiden Threads nichts anfangen.



  • Ah, nur mit Operatoren wird wohl das hier sein.

    #include<iostream>
    using namespace std;
    
    int main(){
        cout << "Bitte geben Sie drei int - Zahle ein \n" ;
        int a,b,c;
        cin >> a >> b >> c;
    
    	(a<=b?(a<=c?cout<<a<<' ',(b<=c?cout<<b<<' '<<c:cout<<c<<' '<<b):cout<<c<<' '<<a<<' '<<b):(b<=c?cout<<b<<' ',(a<=c?cout<<a<<' '<<c:cout<<c<<' '<<a):cout<<c<<' '<<b<<' '<<a))<<'\n';
    }
    


  • SeppJ schrieb:

    Furble Wurble schrieb:

    Die Aufgabe hat weniger mit programmieren zu tun, als vielmehr mit Logik.

    Wenn du dir Aufgabe verstanden hast, dann erklär mal bitte. Ich kann mit dem Operatorgefasel in beiden Threads nichts anfangen.

    Das Operatorgefasel: keine Ahnung. 🙂

    Im Buch allerdings ist das in Kapitel 3, noch vor Funktionen.
    Bis dahin gibt es if/else und cout .

    Volkards Lösung (die erste in diesem Thread) ist - denke ich - so ziemlich das, was Stroustrup im Sinn hat.



  • SeppJ schrieb:

    mgaeckler schrieb:

    Willst Du uns verarschen oder leidest Du unter Alzheimer?

    http://www.c-plusplus.net/forum/328036

    Wenn ich mir den verlinkten Thread ansehe, war der wirklich nicht sonderlich hilfreich. Das liegt natürlich an der Fragestellung, die sehr zu trolligen Antworten verleitet, weil sie gegen jede Netiquette verstößt.

    Dort wurden aber Lösungen geboten:

    http://www.c-plusplus.net/forum/p2418206#2418206

    Und wenn er keine Funktionen aufrufen darf, kann man den Tausch auch leicht anders machen:

    int a, b, c, tmp;
    
    ...
    
    if( a > b )
    {
        tmp = a; a = b; b = tmp;
    }
    

    mfg Martin



  • Danke
    Problem gelöst


Log in to reply