[gelöst]Selection Sort funzt net...
-
Einen schönen Sonntag Vormittag wünsch ich euch, hoffe ihr habt die Zeitumstellung gut verkraftet

Mal wieder macht c++ nicht, was ich will obwohl ich mir schon seit einigen Stunden den Kopf zerbreche woran es liegt...
Google hilft mir nicht und mein c++ Buch auch nicht...
Wie das Thema schon sagt, soll ich einen Sortieralgorithmus schreiben...
Ich habe mich für den Selection Sort entschieden..
So sieht er bei mir aus:*/
#include <iostream>
using namespace std;int main () {
double a[10] = { 12.6 , 33.77 , 51.32 , 95.11 , 19.78 ,
35.34 , 85.18 , 89.0 , 37.5 , 24.1 };double median; // Bis hier war die Aufgabe vorgegeben
int i , k , t, min;
int n;for (i=0; i< n-1; i++ ) //Schleife für die n-1 Durchläufe
{ // 1.
min =i;
for (k= i+1 ; k<n ; k++) //Ermittlung des kleinsten Wertes
{
if( a[k] < a[min])
min=k; //2.
}t=a[min]; //Vertauschen der Werte..
a[min]= a[i]; // 3.
a[i] = t;}
}
return 0; //4.}
zu 1. invalid operands of types `int' and `<unknown type>' to binary `operator<'
zu 2. converting to `int' from `double'
zu 3. invalid operands of types `int' and `<unknown type>' to binary `operator<=
zu 4. synthax error...
Ich bin mir aber super sicher,dass so dere SelecSort funktionieren sollte...
Wie immer bin ich über jede Hilfe dankbar

-
n ist nicht initialisiert und eine Klammer ist zuviel. Du kannst nicht bis n-1 durchlaufen, wenn es für n keinen Wert gibt.
-
Danke schonmal für die schnelle Antwort ..
Also muss ich "n" einen werte geben?
z.b
int n;
n=0;ODer versteh ich dich gerade falsch ?
-
Wenn du 0 gibst hast du ein Laufzeitfehler, da du die Schleife nicht bis 0-1 laufen lassen kannst. Aber im Prinzip ja. Nur kann man das besser machen:
int n = 10;
Gleich initialisieren ist besser.
Außerdem würde ich i und k in den Schleifen deklarieren also so:
for (int i = 0; ....
-
Es ist aber nicht nötig alles in den Klammern zu intialisieren oder?
#include <iostream> using namespace std; int main () { double a[10] = { 12.6 , 33.77 , 51.32 , 95.11 , 19.78 , 35.34 , 85.18 , 89.0 , 37.5 , 24.1 }; double median; //Unuser Variable int i , k , t, min; int n=10; for (i=0; i< n-1; i++ ) { min =i; for (k= i+1 ; k<n ; k++) { if( a[k] < a[min]) min=k; } t=a[min]; // converting to int from double a[min]= a[i]; a[i] = t; } cout << "Median: " << median <<endl; return 0; //expected unqualified-id before "return" } //expected declaration before '}' tokenSo siehts jetzt aus, geht aber immernoch net

-
Vor dem Vertauschen fehlt bei dir die Abfrage, ob i!=min ist.
Siehe auch hier.
-
Perfekt...
Hat wunderbar geklappt...
Vielen Dank allen beteiligten