drei Integer-Werte einzugeben
-
maybe schrieb:
Nicht besonders schön, der c > a zweig ist eigentlich für die Katz , aber so würd ichs jetzt auf die Schnelle angehen.
Gute Idee. Habs ein wenig verbessert. Wenn genau fassen kann, wie weit die Sortierung schon vorangeschritten ist, und das vielleicht sogar aufschreibt, kann man (wie TyRoXx es gemacht hat) Schleifen abrollen und trotzdem genau wissen, daß man korrkt bleibt.
int a, b, c; // int count = 0;//braucht keiner std::cout << "Enter 3 Int's : "; std::cin >> a >> b >> c ; // do{ // count++; if (a > b){ std::swap(a, b); std::cout << "\n Swapped a and b\n"; } //else //jetzt steht von a,b der größere hinten if (b > c){ std::swap(b, c); std::cout << "\n Swapped b and c\n"; } //else //und jetzt steht von a,b,c der größte hinten! //nurnoch a,b in ordnung bringen und wir sind fertig. if(a > b){ std::swap(a, b); std::cout << "\nSwapped a and b\n"; } // }while ( ! ( (a <= b) && (b <= c) && (c > a) ) ); std::cout << "In # " << count << " # Changes following Result : \n" << a << ',' << b << ',' << c << "\n";
-
volkard schrieb:
maybe schrieb:
Nicht besonders schön, der c > a zweig ist eigentlich für die Katz , aber so würd ichs jetzt auf die Schnelle angehen.
Gute Idee. Habs ein wenig verbessert. Wenn genau fassen kann, wie weit die Sortierung schon vorangeschritten ist, und das vielleicht sogar aufschreibt, kann man (wie TyRoXx es gemacht hat) Schleifen abrollen und trotzdem genau wissen, daß man korrkt bleibt.
Jetzt löscht man noch unnötige Debugausgaben:
int a, b, c; // int count = 0;//braucht keiner std::cout << "Enter 3 Int's : "; std::cin >> a >> b >> c ; // do{ // count++; if (a > b){ std::swap(a, b); // std::cout << "\n Swapped a and b\n"; } //else //jetzt steht von a,b der größere hinten if (b > c){ std::swap(b, c); // std::cout << "\n Swapped b and c\n"; } //else //und jetzt steht von a,b,c der größte hinten! //nurnoch a,b in ordnung bringen und wir sind fertig. if(a < b){ std::swap(a, b); // std::cout << "\nSwapped a and b\n"; } // }while ( ! ( (a <= b) && (b <= c) && (c > a) ) ); std::cout << "In # " << count << " # Changes following Result : \n" << a << ',' << b << ',' << c << "\n";Und schon erhält man das, was ich gepostet habe, nur andersherum:
Nathan schrieb:
if (b < a) std::swap(a, b); if (c < a) std::swap(a, c); if (c < b) std::swap(b, c); // a ist nun der kleinste, b der zweitkleinste, c der größte
-
Ich find die Lösung von Volkard auch gut. Darauf wär ich nicht gekommen.