bubblesort problem
-
Ich habe folgendes Problem.
Ich muss die Scheitelpunkte von folgenden Zahlenreihen berechnen.Dh. zum element des arrays p[1] ist der Scheitelpunkt nach 1x²+2x+3 ->2.
Nun soll ich diese liste von klein nach groß sortieren. erst die parabel dann die geraden (geraden müssen nicht sortiert werden)wenn gleich dann kommen sie einfach nacheinander.
struct parabel p[]={
{1,2,3}, // 2,parabel
{2,5,-18},//-21,125,parabel
{2,5,-19},//-22,125,parabel
{-1,0,0}, // 0,parabel
{0,2,3}, //gerade
{1,2,3},2,parabel
{1,2,4},//3,parabel
{0,0,0},// gerade}Das ist ein teil meines Scripts.
Erläuterung: "(p[z+1], &sp1)==0)" Berechnet Scheitelpunkt wenn es eine Parabel ist dann
gibt er 0 zurück d.h. IF ist erfüllt 0==0 und wenn es keine Parbel ist dann 1==0 d.h IF ist nicht erfüllt. Außerdem schreibt er wenn es eine Parabel ist den Wert in Sp1 oder Sp2.for (z=0;z<n;z++){ //Sortiert nach Scheitelpunkten
if (scheitelhoehe(p[z+1], &sp1)==0){//2ter wert =parabel,if (scheitelhoehe(p[z], &sp2)==0){//1ster wert=parabel
if(sp1<sp2){ //wenn 2ter wert kleiner als 1ster schieb ihn vorstruct parabel dummy;dummy=p[z];
p[z]=p[z+1];
p[z+1]=dummy;z=0;}
}else {break;}}}} //wenn (z+1) eine gerade ist brich ab.
Das Problem.
Er gibt aus.
(2.000000,5.000000,-18.000000) Scheitelpunkt -21,125
(2.000000,5.000000,-19.000000) Scheitelpunkt -22,125
(-1.000000,0.000000,0.000000)
(1.000000,2.000000,3.000000)
(1.000000,2.000000,3.000000)
(1.000000,2.000000,4.000000)
(0.000000,0.000000,0.000000)
(0.000000,2.000000,3.000000)Dh. Er sortiert den ersten Wert falsch da ja -22,125<-21,125 und somit (2.000000,5.000000,-19.000000) ganz an erster stelle stehen sollte.
Ich hoffe mir kann jmd helfen den Fehler zu finden. Wäre superhappy.
-
Ist es nicht verständlich? Bitte um Hilfe
-
Miciku schrieb:
Ist es nicht verständlich?
Es ist nicht verständlich. Poste ein minimales, kompilerbares Beispiel. Und verwende Code-Tags, sonst kann man es kaum lesen.
-
Geduld. Sonntagsabends kann man schon mal 15 Minuten auf eine Antwort warten…
Ist die Aufgabe, Bubblesort zu schreiben oder ist die Aufgabe, die Punkte zu sortieren? Letzteres ginge wesentlich einfacher.
Für ein Bubblesort fehlt bei deinem Code übrigens noch mindestens eine Schleife. Wenn du Code postest, bitte vollständig (aber auf das wesentliche reduziert), damit wir wissen, dass eventuelle Fehler auch wirklich Fehler sind und keine kreativen Kürzungen von dir. Und bitte in Codetags. Siehe Link in meiner Signatur.
Weiterhin bietet sich doch sehr dringend an, die ganzen Scheitelpunktberechnungen nicht bei jedem Vergleich zu wiederholen, sondern vorher einmalig alle Punkte zu berechnen und diese Ergebnisse immer wieder zu benutzen. Das spart enorm viel Rechenaufwand.
-
Ja. habe gerade aus Zufall das Problem gelöst. Zwar nicht ganz verstanden aber jetzt geht es. Ich werde mir das bzgl den Codetags durchlesen.Bin noch sehr neu hier.
Trotzdem danke
Schönen Abend euch noch.
Kann geclosed werden. (Falls das hier auch so läuft)