C++ aufgabe *anfänger!



  • Man gibt 2 zahlen ein...und dann wir einem angezeigt welche zahl die groessere un welche die kleinere ist:

    #include<iostream>
    using namespace std;
    int main()
    {
        int a;
        int b;
    
        cout<<"geben sie eine zahl ein\n";
        cin>>a;
        cout<<"geben sie eine 2 zahl ein\n";
        cin>>b;
    
        int max=a;
    
        if(b>max);
    
        max=b;
    
    int min=a;
    
        if(b<min);
    
      min=b;
    
        cout<<"Groesste zahl ist: "<<max<<"die kleinste zahl ist: "<<min<<"\n";
        system("pause");
        return 0;
    }
    

    -Warum bekomm ich immer nur a angezeigt?
    -Kann mir jemand die musterlösung geben? (und dazu jeden einzelnen schritt erklären?!)

    PS: ich habe heut mit c++ lernen angefangen :--)



  • Hast ein paar ';' zu viel.
    zb. hier

    if(b>max);
    

    Kurt



  • Das semikolon hinter dem ) der if anweisungen ist falsch

    if(b>max);//<-<. kein semikolon sonst ist der if-block hier schon beendet und
    // die nachfolgende zeile wird  immer ausgeführt
    

    //edit: naja, schnell is anders



  • Wenn du zwei Zahlen a,b vergleichst und die größere der beiden ermittelst, ermittelst du gleichzeitig die kleinere. Es reicht ein vergleich für 2 Zahlen!

    if ( a > b )
    max = a; min = b;
    else
    max = b; min = a;
    


  • Danke leutz...lag wohl an den semikolons!



  • curry-king schrieb:

    Wenn du zwei Zahlen a,b vergleichst und die größere der beiden ermittelst, ermittelst du gleichzeitig die kleinere. Es reicht ein vergleich für 2 Zahlen!

    if ( a > b )
    max = a; min = b;
    else
    max = b; min = a;
    

    Also das dürfte dir einen Fehler wegen freistehendem else ausspucken 😉



  • Der Code ist eher symbolisch gedacht, sonst hätte ich ihm Cpp-Tags verpasst.
    C und C++ Code wird natürlich mit ordentlichen Einschüben geschrieben 🙂



  • @curry-king: Wir sind hier nicht bei python. Einrückungen sind dem Compiler egal. Bei if, else, for, while müssen Mengeklammern benutzt werden, wenn mehr als eine Anweisung umfasst werden soll!

    @1neoman2: Führ' dir das mal zu Gemüte:

    #include <iostream>
    using namespace std;
    
    template<typename T>
    void tausche(T &a, T &b)
    {
    	T temp = a;
    	a = b;
    	b = temp;
    }
    
    template<typename T>
    void minmax(T &min, T &max)
    {
    	if( max < min )
    		tausche(min, max);
    }
    
    int main()
    {
    	int a = 12, b = 7;
    	minmax(a, b);
    	cout << a << " ist kleiner als " << b << endl;
    	cin.get();
    }
    

Anmelden zum Antworten