int variablen sortieren.
-
Hallo an alle,
habe ein kleines problemm:
Die sache ist die ich habe 6 vareablen von type int.
z.B a=5,b=10,c=45,d=50,e=29.
so, jetz will ich variablen sortieren so das die grosste variable zuerst angezeigt wird und dann die zweit grosste u.s.w.
Wie kann ich das am besten machen ???
Danke !!!!.
-
Wieso verwendest du überhaupt einzelne Variablen (noch dazu mit so aussagekräftigen Namen)? Pack sie lieber in ein Array oder einen STL-Container, dann machst du dir vieles einfacher (u.a. kannst du dann einmal std::sort() drüberjagen, um sie zu sortieren).
-
std::vector<int>
std::sort
-
Wilde Idee um Lehrer zu beeindrucken: Mit 12 Vergleich-Vertausch-Operationen in einer fest einprogrammierten Reihenfolge kannst du sechs Werte (egal ob als Feld oder a,b,c,d,e,f genannt) optimal sortieren:
http://jgamble.ripco.net/cgi-bin/nw.cgi?inputs=6&algorithm=best&output=text
Und dann sind du und dein Lehrer erst einmal eine gute Stunde damit beschäftigt zu durchschauen, wie das funktioniert
-
Er soll das zum Lernen selbst machen, ohne vorhandene Sort-Funktionen zu verwenden?
Bei nur 6 Variablen geht das doch mit einer Reihe von if-Abfragen und einem Sortierarray. Kann man was mit lernen! Nicht immer ist alles schlecht, was ein Lehrer als Aufgabe stellt.
-
du kannst es auch mit vielen if verzweigunen programmieren,wenn du kein stl benutzen darfst zb if(a<b&&...)
ups zu langsam

-
hier mal eine Beispielimplementation für SeppJ's Vorschlag^^
#include <iostream> struct comp_pair { int ia_; // index a int ib_; // index b }; comp_pair comp_table[12] = { { 1, 2 }, { 4, 5 }, { 0, 2 }, { 3, 5 }, { 0, 1 }, { 3, 4 }, { 2, 5 }, { 0, 3 }, { 1, 4 }, { 2, 4 }, { 1, 3 }, { 2, 3 } }; void comp_and_swap(int & a, int & b) { int tmp = a < b ? a : b; b = a < b ? b : a; a = tmp; } void sort6(int * numbers) { for (int n = 0; n < 12; ++n) { comp_pair & comparison = comp_table[n]; comp_and_swap(numbers[comparison.ia_], numbers[comparison.ib_]); } } int main(void) { int numbers[6]; for (int n = 0; n < 6; ++n) { std::cout << (n + 1) << ". Number: "; std::cin >> numbers[n]; } sort6(numbers); for (int n = 0; n < 6; ++n) std::cout << (n ? ", " : "") << numbers[n]; std::cout << std::endl; return 0; }
-
Danke an alle hat mir echt geholfen !!!!
Super