[gelöst] 3 ints sortieren ohne Werkzeug
-
knivil schrieb:
@icarus2: Deine Loesung ist unvollstaendig, du gibst nur Minimum und Maximum aus.
Ja, ist klar. Ich wollte ja ach nur zeigen wie man es implementieren könnte. Den Rest hätte er wahrscheinlich selber geschafft.
-
Wenn man abs nicht verwenden darf, kann man es sich auch schnell selbst definieren. Damit sind keine logischen Operatoren wie && oder || enthalten, if ohne else und Block ... meine Implementation erfuellt also alle Anforderungen?
int abs(int a) { if (a < 0) return -1*a; return a; }
-
Welches Buch soll das denn sein? Und auf welcher Seite steht die Aufgabe?
-
Ich tippe auf das hier: Einführung in die Programmierung mit C++ | ISBN: 3868940057
Stroustrup wurde schon genannt, std_lib_facilities.h haben wir hier auch schonmal diskutiert.Ich kann mir nicht vorstellen, dass die Lösung so aussehen soll wie von SeppJ. Stroustrup ist sehr pragmatisch und darauf bedacht, guten Stil zu lehren; intellektuelle Kunststückchen verlangt er sicher nicht.
-
@knivil - Stimmt, auch dir vielen Dank. Wie abs() zu implementieren wäre, hätte ich allerdings nicht gewusst - Mathe ist schon verdammt lange her. Grins.
@Bashar - genau das, ja. Wie gesagt, ich bin nicht sicher, ob Stroustrup das auch wirklich so gemeint hat. Tatsache ist aber, dass alles, was ich jetzt mal ausgeschlossen habe, vor dieser Aufgabe im Buch wirklich nicht besprochen und auch nicht angewendet wird. Man sollte aber vielleicht noch erwähnen, dass jedes Kapitel einen dreiteiligen Übungsteil hat. Im ersten Teil wird einfach nur angewendet, was besprochen wurde. Im zweiten Teil gibt es Wiederholungsfragen zum Inhalt des Kapitels. Und im dritten Teil gibt es *wirkliche* Aufgaben, bei denen eigenes Rätseln und Nachdenken gefordert ist. Kleine Puzzles eben. Und die Aufgabe stammt aus diesem dritten Teil. Stroustrup selbst sagt, dass die Aufgaben des dritten Teils Rätsel sind, die man für das Verständnis des Buches nicht bearbeiten *muss*. Obligatorisch sind nur die ersten beiden Übungsteile. Kann also gut sein, dass er vielleicht gerade doch auf solche "intellektuellen Kunststücke" aus ist. Vielleicht kann ich in ein paar Kapiteln mehr dazu sagen, wenn ich die anderen Aufgaben gesehen habe.
-
Vielleicht gibt es zu den aufgaben auch Loesungen des Autors.
-
knivil schrieb:
Vielleicht gibt es zu den aufgaben auch Loesungen des Autors.
-
Hm. Er benutzt logische Operatoren in seiner Lösung. Da muss ich nachher die ersten drei Kapitel nochmal durchblättern, ob ich das irgendwo übersehen habe. Falls nicht, schreibe ich ihm.

-
Hab das Buch nicht, aber nach dem Link von oben ist Kapitel 3.4 'Operationen und Operatoren'. Da wird das wohl drin stehen.
Insgesamt einer der überflüssigsten Threads, die ich hier je gesehen habe
-
Nein, steht da nicht drin. Das Buch ist auch nicht nach diesem Schema F aufgebaut, weil keine strukturierte Sprachbeschreibung, sondern didaktisches Lehrbuch.
Und den Thread musst du ja nicht lesen oder beantworten.
Für mich war er nicht überflüssig - ich hab' was gelernt dabei.
-
dennis.cpp schrieb:
Für mich war er nicht überflüssig - ich hab' was gelernt dabei.
Okay, sry, dann will ch nichts gesagt haben.
Du hast übrigens Recht: Laut Index kommt '&&' erst auf Seite 1053. Gewöhnungsbedürftiges Buch.
-
Ja, ist es tatsächlich. Und obwohl es mir bis jetzt echt gut gefällt, bin ich noch nicht sicher, ob es mir im Endeffekt mehr bringt als die beiden bisherigen Anläufe. Wenn's nicht vom "Meister" selbst wäre, wäre ich noch skeptischer...

-
Warum alle so kompliziert?
Unrolled Bubble-Sort:
#include <iostream> void sort3(int a, int b, int c) { // tausche a, b wenn nötig int a2 = a; int b2 = b; if (a > b) a2 = b; if (a > b) b2 = a; // tausche b, c wenn nötig int b3 = b2; int c2 = c; if (b2 > c) b3 = c; if (b2 > c) c2 = b2; // tausche a, b wenn nötig int a3 = a2; int b4 = b3; if (a2 > b3) a3 = b3; if (a2 > b3) b4 = a2; // haben fertig std::cout << a3 << "," << b4 << "," << c2 << "\n"; } int main() { sort3(1, 2, 3); sort3(1, 3, 2); sort3(2, 1, 3); sort3(2, 3, 1); sort3(3, 1, 2); sort3(3, 2, 1); return 0; }
-
hustbaer schrieb:
Warum alle so kompliziert?
void sort3(int a, int b, int c) { // tausche a, b wenn nötig int a2 = a; int b2 = b; if (a > b) a2 = b; if (a > b) b2 = a; if (c > b2) cout << a2 << "," << b2 << "," << c << "\n"; if (c < a2) cout << c << "," << a2 << "," << b2 << "\n"; else cout << a2 << "," << c << "," << b2 << "\n"; } int main() { sort3(1, 2, 3); sort3(1, 3, 2); sort3(2, 1, 3); sort3(2, 3, 1); sort3(3, 1, 2); sort3(3, 2, 1); return 0; }
-
Murks, sorry!!!