C++ Programmieren - umdrehen (Zahlenvergleich von drei Variablen)

  • Hallo,
    hiermal die Aufgabenstellung:


    Ändern Sie dieses Programm so ab, dass die eingegeben Zahlen in aufsteigender Reihenfolge ausgegeben werden.


    Der Code:



    Wie muss man


    Code
    printf("\nDie groessere Zahl lautet %i",
     	   (x>y) ? ((z>y)? z : x) : ((z>y)? z : y) );


    umändern? Nur die größer/kleiner Zeichen verdrehen funktioniert leider nicht,
    da muss man noch irgendwas bedenken.


    Ich hoffe hier kann mir jemand helfen.


    Vielen Dank!

  • Wenn das ein C++ Buch ist, dann schmeiße es weg.
    Wenn dir jemand versucht so C++ beizubringen, sag ihm, dass er's vergessen soll.


    Das was du dir da gerade anschaust könnte man auch in C compilen. (Da werden sogar die C-Includes verwendet, kein Kommentar dazu an dieser Stelle..)

  • Es gibt eine Funktion, die die Zahlen umdrehen kann... swap oder so... weiß jetzt nicht genau, weil ichs nicht verendet habe.


    Ansonsten kannst du das ganze mit if-Abfragen ziemlich leicht lösen...


    //edit
    Es geht eigentlich viel einfacher bzw. kommt drauf an, wie du es willst.
    Sollen Zufallszahlen hergenommen werden und in aufsteigender Reihenfolge ausgegeben werden oder vom User eingegebene Zahlen.
    Beim Ersteren ist eine for Abfrage zu empfehlen.

  • Wenn das ein C++ Buch ist, dann schmeiße es weg.

    Das Buch ist für die Berufsschule.
    Ist heißt zwar "C Programmieren von Anfang an"
    siehe hier: http://www.amazon.de/C-Program…TF8&qid=1321897237&sr=8-1


    Aber unsere Lehrkraft sagt, wir programmieren damit C++

    Wenn dir jemand versucht so C++ beizubringen, sag ihm, dass er's vergessen soll.

    Das was du dir da gerade anschaust könnte man auch in C compilen. (Da werden sogar die C-Includes verwendet, kein Kommentar dazu an dieser Stelle..)

    Stimmt, ich kanns auch mit C# compilen. Ich benutze hauptsächlich das Programm Visual c++ Express Edition 2010, in der Schule arbeiten wir mit 2008 und daher gibt es auch immer Fehler, da die Dateiendung nicht passt und ich
    so immer ein neues Projekt erstellen muss.

    Ansonsten kannst du das ganze mit if-Abfragen ziemlich leicht lösen...

    Das stimmt, habe ich auch gesagt, dürfen wir aber nicht. Wir müssen es so lernen, da es für die Klassenarbeit notwendig ist.
    Mit einer verschachtelten if Funktion wäre es viel leichter. Man könnte es auch mit einem switch lösen, meinte ein anderer Azubi.


    Du brauchst das nicht so extrem unübersichtlich machen im Cond. Op.

    Wie schon gesagt, "gezwungen"


    Habe heute auchmal im Betrieb gefragt, die wundern sich auch, was das soll.
    Eigentlich lerne ich ja Fachinformatiker für Systemintegration, dass fällt mir zu sehr in die Anwendungsentwicklung rein,
    naja ich komm nicht drum rum.


    @ Ropdeflop: Ich werde mal dein Code testen.


    Danke euch schonmal!

  • Stimmt, ich kanns auch mit C# compilen.


    Nein, ist nämlcih eine ganz andere Sprache. Schmeiß das mal in einen C# Compiler. Ich sag mal, da werden um und bei 100 Fehlermeldungen bei rumkommen. (Sofern er nicht schon vorher das Parsen abbricht)
    Die Lehrkraft scheint keine Ahnung zu haben, denn ihr schreibt C, welches natürlich ein Teil des C++ Standards ist, aber "kein" C++ ist.


    Dein Programm sieht in reinem C++ nämlich so aus:
    #include <iostream>


    int main(void) {
    int x,y,z;
    std::cout<<std::endl<<"Zahlenvergleich"<<std::endl<<"Bitte x eingeben: ";
    std::cin>>x;
    std::cout<<"Bitte y eingeben: ";
    std::cin>>y;
    std::cout<<"Bitte z eingeben: ";
    std::cin>>z;
    std::cout<<std::endl<<"Die kleinste Zahl lautet "<<(x < y && x < z ? x : y < z && y < x ? y : z);
    return 0;
    }


    Ich hoffe dir fällt der Unterschied auf. (Wenn du den std:: namespace natürlich nicht immer schreiben willst, kannst auf auch using namespace std; verwenden, durchbricht imho aber die Struktur)

  • Jo hatte mich gewundert, so kenne ich das auch nur in c++ mit cout/cin.
    Nen system("paused") wäre noch von vorteil, damit die konsole offenbleibt.


    Edit by DMA:// Braucht man nur, wenn die IDE das Fenster nicht hält (und process returns auflistet) oder wenn man zufaul ist, mal dat Ding per Hand auszuführen *g)


    Edit by Prinz Pipi: // Gut zu wissen :D Dev++ macht es dann anscheinend nicht :D wie gehts wie stehts ;D

  • Ah supi.
    Vielen Dank DMA!


    Habe es nunmal mit Visual Studio C++ 2010 Express nach geschrieben funzt top.
    Aber wozu die Include iostream?


    Bei mir funktioniert es auch rein mit der stdafx.h, die wird bei jedem neu erstelltem Projekt
    sowieso vorgegeben?!


    Ich versuche nunmal den Code so abzuändern, dass auch die mittlerste und größte Zahl angezeigt wird.
    Dabei hilft mir dein Code top als Starthilfe!


    Wenn man deinen Code mit meinem vergleicht, sieht man deutlich den Unterschied zwischen C und C++
    Ich frag ich dann nur, was der Lehrer versucht uns beizubringen oO


    8D:
    Wenn ich die Anwendungen ausführe, mach ich das immer mit der Konsole, ich wechsel unter Dokumente zum Projekt, oder ich drücke
    in Visual Studio auf den grünen Pfeil, mit einem "getchar" kann man dann an einer beliebigen Position stoppen, so haben wir es jedenfalls
    gelernt.

  • Visual Studio erstellt dir vorkompilierte Header und bindet diese per stdafx.h ein. (AFX steht für Application Framework Extensions)
    Dort sind auch alle Standard Libraries ausgelagert.


    Wieso die Lehrkraft es macht weiß ich nicht. Allerdings kann ich mir vorstellen, dass sie euch strukturiertes Programmieren beibringen möchte, was natürlich in C sehr gut geht.
    Allerdings sollte man dann auch das Kind beim Namen nennen und den Lehrlingen/Schülern nichts (indirekt) Falsches in den Kopf setzen.
    Wahrscheinlich wird Objekt-orientierte Programmierung noch irgendwann dazu kommen, weswegen wohl direkt das Ganze als C++ deklariert wird. (Auch wie C++ ein weniger gutes Beispiel für gute OOP ist ;))

  • Also wie lernen die Grundstoffe des C++ Programmierens. Eingearbeitet haben wir uns mit erstellen von Struktogrammen, danach sollten wir die selben Aufgaben mit C++ lösen.
    Zum Beispiel einen Benzinverbraucher programmieren.


    Per Struktogramm sieht es so aus:


    Eingabe von gefahrene Kilometer
    Eingabe vom verbrauchtem Sprit
    Vorgang Verbrauchte Spritmenge * gefahrene Kilometer
    Ausgabe vom Verbrauch auf 100 Kilometer


    Damit haben wir angefangen, solche Aufgaben sollen wir nun wie er sagte in C++ mit Hilfe unseres Buches (mit sehr vielen Beispielen) lösen. Dies wird dann auch Bestandteil
    der ersten Klassenarbeit sein.


    Das einzige was wir immer abändern mussten, wenn wir ein neues Projekt erstellt haben, war wie du es gemacht hast:


    Beim Startprojekt bekommt man folgenden Code:


    Code
    int _tmain(int argc, _TCHAR* argv[]) {
    return 0; }


    Diesen müssen wir in

    Code
    int main (void) {
    return 0; }


    abändern. Wobei uns auch nicht der Unterschied trotz mehrfacher Fragen genannt wurde.
    Fragen die Wieso, weshalb, warum enthalten, werden nicht beantwortet, man kann schon fast sagen ignoriert.


    Er kann und nicht denn Unterschied erklären, warum auch immer...
    (Nur als Beispiel)


    Da ich an der oben genannte Aufgabe so lang gesessen habe, um überhaupt mal ein "halbrichtiges" Ergebnis zu erhalten,
    habe ich hier nachgefragt, nun sehe ich wie gesagt den riesigen Unterschied.


    Ich bin mal gespannt, ob objekt orientierendes Programmieren noch dazu kommt. Da ich ja eigentlich nicht direkt in die Anwendung "gehöre", sollte
    bei den Systemelektronikern und Systemintegratoren die Grundstoffe reichen. Da wir den Lehrer 4 stündig haben (alle 2 Wochen), muss ich auch damit
    sehr viel Zeit zuhause investieren und durchs Internet herausfinden, was xy bedeutet und wozu es gut ist. etc.


    Danke schonmal für die Bedeutung der include, denn Rest versuch ich mir selbst zu verinnerlichen. Der Anfang ist getan :thumbup: