Genau das is mein Problem. Es zeigt die 23 3mal an und löscht irgendwelche anderen Werte dafür einfach raus... ich hab Kein plan warum das passiert und wann aber manche teile sortiert er und manche net! Und ja die Klasse is im mom noch sinnlos ich habs nur so geschrieben das ich später vllt noch ne Header datei draus machen kann!
ähm was hastn du da jetzt verändert? ich seh da nciht wirklich n Unterschied! und bevor ich jetzt wieder als voll..... beschimpft werde... Denkt bitte daran das ich net wirklich gut bin in Programmierung und es mich auch net wirklich interesiert! Aber ich muss es halt machen
Warum sagst du das nicht?
Warum muss man erst in selbst in die Falle laufen?
Das mit dem crashen war nicht nur dumm, sondern auch noch blauäugig. Man postet keinen Code der noch nen anderen Fehler (hier crash) hat.
Trotz dessen, dass du so DAU-ig deine Frage gestellt hast, werde ich hier die Antwort auf dein Problem posten. (Hauptsächlich deshalb, weil ich so dumm war das Ergebnis mir nicht genau anzuschauen).
if( array[suchPos] < array[arrayAnfang] )
{
minPos=suchPos;
minWert=array[suchPos];
array[minPos]=array[arrayAnfang];
array[arrayAnfang]=minWert;
}
5 Minuten printf debugging(?) haben genügt. Oder habe ich noch irgendetwas anderes übersehen?
Ach übrigens es funktioniert jetzt! hab noch was vergessen rein zu schreiben! Aber so wie du das geschrieben hast ist es kein Selektion sort mehr... Du hast das Austauschen mit in die if-Schleife geschrieben. Selektion Sort heisst aber das er ZUERST das gesamte array nach der kleinsten Zahl durchsucht und dann tauschst.
Mit der Version tauscht er aber sofort wenn er n kleineres Element gefunden hat und das is net der Sinn von SelektSort
@...
Ich bin enttäuscht! Aber was soll man von Amat.... ach lassen wir das. Du sollst schliesslich arbeiten und nicht ständig den alten Computerhilflern über die Strasse helfen...
@Blackbird
#include <iostream>
using namespace std;
void f (double *array,int size)
{
for( int arrayAnfang = 0; arrayAnfang < size-1; ++arrayAnfang )
{
int minPos = arrayAnfang;
double minWert = array[arrayAnfang];
for( int suchPos = arrayAnfang + 1 ;suchPos < size ; ++suchPos )
{
if( array[suchPos] < array[minPos] )
{
minPos=suchPos;
minWert=array[suchPos];
}
}
array[minPos]=array[arrayAnfang];
array[arrayAnfang]=minWert;
}
for (int i=0; i<size;i++)
{
cout << array[i]<< endl;
}
}
int main()
{
double array[]={1,2,8,10,423,12,23,765,345,81,66,45};
f( array, sizeof( array ) / sizeof( double ));
}
Toll das Du den Fehler von ... erkannt hast. Aber die richtige Lösung war dann doch wohl nicht soo weit entfernt, oder??? Ich spar mir weitere Kommentare - meine Meinung diesbezüglich ist ja bekannt...
Hättest Du Dir die Mühe gemacht, mein Programm zu kompilieren, hättest Du diese Ausgabe erhalten:
1
2
8
10
12
23
45
66
81
345
423
765
Dämmert Dir langsam, dass dieses ganze gemecker in den Postings vorher nicht von ungefähr kommt ???
Ja jetzt gehts. Thx! Ich hatte noch was falsches von Vorhin drin als mir jemand gesagt von diesen klugen leuten hier gesagt hat wie ichs doch machen soll das war aber Falsch! Naja habs jetzt nochmal genau überprüft und jetzt funktionierts! Danke vielmals!
Jetzt hab ich nur noch das Prob das ich das auch noch auf Wörter übertragen muss! Also bis jetzt kann ich mit diesem Quellcode nur Zahlen sortieren und Wörter hab ich bis jetzt noch nie Sortiert!
-------------------------------------------------------
void Selectsort :: Wort (char **array,int size)
{ for(int arrayAnfang=0;arrayAnfang<size-1;++arrayAnfang)
{ int minPos=arrayAnfang;
char* minWert=array[arrayAnfang];
int max=(sizeof(array)/sizeof(array[0]));
for (int suchPos=arrayAnfang+1;suchPos<max;++suchPos)
{ if (_stricmp(array[suchPos],array[minPos])<0)
{ minPos=suchPos;
minWert=array[suchPos];
};
};
array[minPos]=array[arrayAnfang];
array[arrayAnfang]=minWert;
}
}
----------------------------------------------------
Das Funktioniert nämlich net ganz!
Ich weiss ich nerv =) aber is ja schlieslich n Hilfe Forum
Och nö, das ist jetzt so dämlich hingeschlampt, da gehört jeder bestraft, der noch hilft.
Beispiel:
Code: [Auswählen]int max=(sizeof(array)/sizeof(array));
Was soll das? Was sollte das überhaupt machen, selbst wenn "sizeof(array)" in diesem Kontext Sinn machen würde??? Schreib doch gleich "int max = 1"
int max=(sizeof(array)/sizeof(array[ 0 ]));
sollte das heissen... ich weiss nicht warum es das nicht übernommen hat....
also /sizeof(array[ 0 ]));
Ich hatte nur die eckigen Klammern zusammen geschrieben ohne leerzeichen dann hat er da n Fehler rein gehaut.... Ey man soooo doof bin ich jetzt auch wieder net man auch wenn das hier vllt alle denken
Also erst mal an Alle die meinen Ihre Klappe so weit aufreisen
ich hab bei euren gesammelten dummen antworten (ohne den Threateröffner) n paar miese fehler/verhaltenstörungen gefunden
1.) wenn jemand ein problem mit C++ hat schickt ihn nich zu Java. das is wie n Treiberproblem unter Linux und du ihm dann n Windowstreiber gibst, das is dämlich hirnrissig und einfach nur hinterwäldlernievau
2.) KEINER von euch "Intelligenten" Menschen hat erkannt das er kein "echtes" Selectsort programmiert hat.
3.) Zum thema Pisa, KEINER von euch hat auf Seine frage geantwortet dass es ne lösung erreicht gegeben, ihr habt ihn einfach nur beschimpft und niedergemacht. Selbst ein 8 Jähriger hätte ihm besser geholfen als ihr es getan habt, weil der 8-jährige
a) die Frage gelesen hätte
b) er mehr Fachkenntnis gezeigt hätte als ihr es getan habt
4.)wenn ihr selbst keine Ahnung habt von Programmieren, dann haltet einfach die klappe
Zitat:
Code:
int max=(sizeof(array)/sizeof(array));
Was soll das? Was sollte das überhaupt machen, selbst wenn "sizeof(array)" in diesem Kontext Sinn machen würde??? Schreib doch gleich "int max = 1"
du hast recht dass es in dem Kontext keinen wirklichen sinn macht, aber es ergibt nich 1
als beispiel:
char*array[50];
int max=(sizeof(array)/sizeof(array[ 0]))
in max steht dann der Wert 50 ( 200 / 4 = 50 für leute die nich rechenen können)
5uc|< /\/\y 5|-|0|275 1|-||2 |\|0085
Greez das Phyxas
Also erst mal an Alle die meinen Ihre Klappe so weit aufreisen
ich hab bei euren gesammelten dummen antworten (ohne den Threateröffner) n paar miese fehler/verhaltenstörungen gefunden
1.) wenn jemand ein problem mit C++ hat schickt ihn nich zu Java. das is wie n Treiberproblem unter Linux und du ihm dann n Windowstreiber gibst, das is dämlich hirnrissig und einfach nur hinterwäldlernievau
Was eine Exception ist sollte eigentlich jeder Informatiker wissen. Mit diesem Wissen ist der Schritt zu ArrayIndexOutOfBounds nicht mehr sooo weit.
2.) KEINER von euch "Intelligenten" Menschen hat erkannt das er kein "echtes" Selectsort programmiert hat.Also war es unser Fehler ihn darauf hinzuweisen, dass sein Testprogramm, welches ja das Problem demonstrieren sollte, nicht funktionieren kann.
Seine Frage war ja nicht 'Hey wie geht Selection Sort?' sondern 'Hey, da geht das sortieren nicht'.
3.) Zum thema Pisa, KEINER von euch hat auf Seine frage geantwortet dass es ne lösung erreicht gegeben, ihr habt ihn einfach nur beschimpft und niedergemacht. Selbst ein 8 Jähriger hätte ihm besser geholfen als ihr es getan habt, weil der 8-jährige
a) die Frage gelesen hätte
b) er mehr Fachkenntnis gezeigt hätte als ihr es getan habt
Ich meine das habe ich gerade eben ausreichend beantwortet.
Hast du die Frage gelesen?
4.)wenn ihr selbst keine Ahnung habt von Programmieren, dann haltet einfach die klappe
*g*
Wenn du wüßtest mit was für Leuten du hier sprichst.
Zitat:
Code:
int max=(sizeof(array)/sizeof(array));
Was soll das? Was sollte das überhaupt machen, selbst wenn "sizeof(array)" in diesem Kontext Sinn machen würde??? Schreib doch gleich "int max = 1"
du hast recht dass es in dem Kontext keinen wirklichen sinn macht, aber es ergibt nich 1
als beispiel:
char*array[50];
int max=(sizeof(array)/sizeof(array[ 0]))
in max steht dann der Wert 50 ( 200 / 4 = 50 für leute die nich rechenen können)
versuch mal folgendes :
void f( char** arr )
{
printf( "%d", sizeof( arr ) / sizeof( arr[0] ) );
}
Hinweis:
Wenn der Typ von arr == char** ist (wie in f), dann ist
sizeof( char** ) / sizeof( char* ) == 1
(lassen wir mal FAR/NEAR calls usw. raus)Wenn du folgendes machst :
char* arr[100];
sizeof( arr ) / sizeof( arr[0] )
dann ist das was anderes, nämlich sizeof( char*[100] ) / sizeof( char* )
oder sehe ich das falsch?Deshalb auch der freundlich fröhliche (implizite) Kommentar, mit Java wärest du schneller am Ziel.
5uc|< /\/\y 5|-|0|275 1|-||2 |\|0085
Greez das Phyxas
</i>Wow ist das lead.</i>
« Blitzbasic Deutsch | zufällig zahlenpaare ausgeben in python,tcl oder c » | ||