C++ Aufgabe - wahrscheinlich ziemlich einfach =)
-
Hallo zusammen!
Ich wäre euch sehr dankbar, wenn ihr folgende Aufgabe lösen könntet:
Schreiben Sie ein Programm, um 6 Ganzzahlen mit höchstens 10 Vergleichen zu sortieren. Das ist die Minimalzahl an Vergleichen.
Ich bin zwar auch schon darauf gekommen, dass mit if zu machen, aber irgendwo hab ich immer Fehler
Danke schonmal!
-
so gehts leider nicht.. keiner schreibt dir dein programm.
poste einfach das, was du schon programmiert hast, und kennzeichne die stellen, wo fehler sind.
dann läßt es sich leichter diskutieren
-
Also, ich hab das ganze jetzt für 5 Variablen mit 7 Vergleichen programmiert:
if (a > b) {
int h = a; a = b; b = h;
}
assert (a <= b);
if (c > d) {
int h = c; c = d; d = h;
}
assert (c <= d);
if (b > d) {
int h = b; b = d; d = h;
h = a; a = c; c = h;
}
assert (a <= b && b <= d && c <= d);
if (b > e)
if (a > e) {
int h = e; e = d;
d = b; b = a; a = h;
} else {
int h = e; e = d; d = b; b = h;
}
else if (d > e) {
int h = e; e = d; d = h;
}
assert (a <= b && b <= d && d <= e && c <= e);
if (c > b) {
if (c > d) {
int h = c; c = d; d = h;
}
} else if (c > a) {
int h = b; b = c; c = h;
} else {
int h = c; c = b; b = a; a = h;
}
assert (a <= b && b <= c && c <= d && d <= e);Ich hab jetzt keine Kommentare geschrieben - ich weiß, schlechter Programmierer, aber das Prinzip ist ja immer dasselbe, man vergleicht zwei Zahlen und vertauscht sie, falls sie falsch angeordnet sind. Meine Frage ist nun, ob sich das Prinzip auch einfach auf doppelt so viele Zahlen anwenden lässt. Und das ja nur mit 10 Vergleichen ... man hat ja schon 5 allein durch den Anfangsvergleich!
Danke!
-
Für sowas gibt es Algorithmen. Bin ich zwar nicht so der Crack drin, aber ich denke so Sachen wie BubbleSort sollten schon weiterhelfen. So wie du es machst isses allerdings sehr sehr unübersichtlich und schlecht erweiterbar und und und....
-
Hm ... ich hab leider erst gerade mit C++ angefangen, genau gesagt vor einer Woche und das ist das einzige was der Prof uns bisher beigebracht hat, wobei er genauso vorgegangen ist, falls es also ne schlechte Methode ist oder unübersichtlich oder sowas, tuts mir leid, ich kann nur nicht mehr!
Naja, trotzdem danke ....
-
hmm ohne arrays?? oder hattet ihr die schon..
keine ahnung, ob er sowas wollte? oder noch komplizierter?#include <iostream> using namespace std; int main() { int i=9, j=8,k=10,l=13,m=1,n=3;; int temp; cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<m<<" "<<n<<endl; while ( !(i<j && j<k && k<l && l<m && m<n) ){ if ( i > j ){ temp=i; i=j; j=temp; } if ( j > k){ temp=j; j=k; k=temp; } if ( k > l){ temp=k; k=l; l=temp; } if (l > m){ temp=l; l=m; m=temp; } if (m > n){ temp=m; m=n; n=temp; } } cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<m<<" "<<n<<endl; }