2016-10-07 5 views
-2

Ich werde versuchen, dies kurz und einfach zu halten. Hier ist meine Aufgabe (zu groß kopieren hier):Kann nicht bubblesort diese Werte

[Übung Bild 1] [2] [Übung Bild 2] [1]

So lange Geschichte kurz, ich habe einen neuen Datum Stil geschaffen, wird 3 Werte (a, b und c) enthalten und diese müssen in eine Gleichung eingegeben werden und dann werden die Wurzeln berechnet und angezeigt. Ich bin nicht fast noch fertig, aber ich habe einige Probleme bekam mit den Werten Sortierung (die wir zu tun haben)

+0

Side Note- Sie eine Swap-Funktion erstellen sollten, anstatt die exakt gleiche Code mehrfach in Ihrer sort_equation_array Funktion Wiederholung – mhodges

+1

das richtige Werkzeug, solche Probleme zu lösen, ist der Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –

+0

Ich glaube, wenn Sie pass auf 0 initialisieren, i auf (pass + 1) initialisieren, alle V [i] durch V [pass] ersetzen, und alle V [i + 1] mit V [i], sollte Ihr Code funktionieren wie erwartet – mhodges

Antwort

0

Per mein Kommentar:

Ich glaube, wenn man auf 0 passieren initialisieren initialisieren i zu (+ 1 passieren), ersetzen Sie alle V [i] mit V [pass] und alle V [i + 1] mit V [i], sollte Ihr Code als

void swap(Quadratic_equation arr[], int lowerIndex, int higherIndex) { 
    Quadratic_equation temp = arr[lowerIndex]; 
    arr[lowerIndex] = arr[higherIndex]; 
    arr[higherIndex] = temp; 
} 
void sort_equation_array(Quadratic_equation V[], int howMany) 
{ 
    for (int pass = 0; pass < howMany; pass++) 
     {     

     for (int i = (pass + 1); i <= howMany -1; i++)  
     { 
      if (V[pass].a > V[i].a) 
      { 
       swap(V, pass, i); 
      } 
      else if (V[pass].a == V[i].a && 
         V[pass].b > V[i].b) 
      { 
       swap(V, pass, i); 
      } 
      else if (V[pass].a == V[i].a && 
       V[pass].b == V[i].b && 
       V[pass].c > V[i].c) 
      { 
       swap(V, pass, i); 
      } 
     } 
     } 
} 
erwartet funktionieren

Sie sollten auch Ihre Eingaben bereinigen, um leichter erkennen zu können, welche Werte wohin gehen. Hier ist, was ich getan habe, Sie können es ändern, um zu sagen, was immer Sie möchten, aber Sie bekommen die Idee.

void get_quadratic_equation(Quadratic_equation &e) 
{ 
    cout << "a: "; 
    cin >> e.a; 
    cout << "b: "; 
    cin >> e.b; 
    cout << "c: "; 
    cin >> e.c; 
} 

int load_equation(Quadratic_equation V[], int n) 
{ 
    Quadratic_equation e; 

    int counter = 0; 
    cout << endl << "Set values for equation " << counter << endl; 
    get_quadratic_equation(e); 

    while (e.a != 0) 
    { 
     V[counter] = e; 
     ++counter; 

     if (counter == n) break; 
     cout << endl << "Set values for equation " << counter << endl; 
     get_quadratic_equation(e); 
    } 
    cout << endl; 
    return counter; 
} 

OUTPUT

** Enter Quadratic Equations ** 

Set values for equation 0 
a: 1 
b: 2 
c: 3 

Set values for equation 1 
a: 4 
b: 5 
c: 6 

Set values for equation 2 
a: 7 
b: 8 
c: 9 

Set values for equation 3 
a: 8 
b: 7 
c: 6 

Set values for equation 4 
a: 5 
b: 4 
c: 3 

Set values for equation 5 
a: 2 
b: 1 
c: 0 

Set values for equation 6 
a: 0 
b: 0 
c: 0 

** NOT SORTED ** 
1x^2 + 2x + 3  root 1 = -1.00+i 1.41  root 2 = -1.00-i 1.41 
4x^2 + 5x + 6  root 1 = 0.00+i 1.05  root 2 = 0.00-i 1.05 
7x^2 + 8x + 9  root 1 = 0.00+i 0.98  root 2 = 0.00-i 0.98 
8x^2 + 7x + 6  root 1 = 0.00+i 0.75  root 2 = 0.00-i 0.75 
5x^2 + 4x + 3  root 1 = 0.00+i 0.66  root 2 = 0.00-i 0.66 
2x^2 + 1x + 0  root 1 = 0.00  root 2 = -0.50 

** SORTED BY A ** 
1x^2 + 2x + 3  root 1 = -1.00+i 1.41  root 2 = -1.00-i 1.41 
2x^2 + 1x + 0  root 1 = 0.00  root 2 = -0.50 
4x^2 + 5x + 6  root 1 = 0.00+i 1.05  root 2 = 0.00-i 1.05 
5x^2 + 4x + 3  root 1 = 0.00+i 0.66  root 2 = 0.00-i 0.66 
7x^2 + 8x + 9  root 1 = 0.00+i 0.98  root 2 = 0.00-i 0.98 
8x^2 + 7x + 6  root 1 = 0.00+i 0.75  root 2 = 0.00-i 0.75
+0

@SamuelSvensson Ich überprüfte die Gleichungen in der Übung, und mein Code richtig sortiert sie. Was Ihre anderen Aufgabenanforderungen (Gruppierung, Formatierung usw.) betrifft, so sind diese Fragen außerhalb des Rahmens dieser Frage. – mhodges

+0

@SamuelSvensson Wenn meine Antwort Ihnen geholfen hat, Ihre Frage zur Blasenbildung zu lösen, bitte upvote und markieren als akzeptierte Antwort, so dass zukünftige Zuschauer können Identifizieren funktionierender Lösungen. Leider bin ich kein Tutor, und ich habe nicht die Zeit, mit viel größeren Fragen eins zu eins zu arbeiten. Ich bin nicht der einzige Fisch im Meer, aber ich bin mir sicher, dass viele weitere Leute hier gerne helfen würden. Fühlen Sie sich frei, zusätzliche Fragen in separaten Fragen zu stellen. Und denken Sie daran, um Hilfe zu SO zu erhalten, müssen Sie * spezifische Fragen * stellen, die ein * spezifisches Problem * skizzieren und wie Sie versucht haben, es zu lösen. – mhodges

Verwandte Themen