2016-07-13 13 views
-3

Ich habe einige Probleme mit meinem aufsteigenden Funktionsalgorithmus. Die Funktion Erreicht das größte Element der Funktion und setzt es an jeder Stelle. Zum Beispiel geben Sie Eingaben in der folgenden Reihenfolge ein: 88, 72, 81. Dann erhalten Sie 88,88,88 statt 72, 81, 88;Array aufsteigender Algorithmus C++

Code:

void orderGrades(Student grades[], int studentNumber){ 
int startScan, minIndex, minValue; 

for(startScan = 0; startScan < (studentNumber - 1); startScan++){ 
    minIndex = startScan; 
    minValue = grades[startScan].getGrade(); 
    for(int index = startScan + 1; index < studentNumber; index++) 
    { 
     if(grades[index].getGrade() < minValue) 
      { 
       grades[index].setGrade(minValue); 
       minIndex = index; 
      } 
     } 
     grades[minIndex].setGrade(grades[startScan].getGrade()); 
     grades[startScan].setGrade(minValue); 
    } 
} 

Ich bin nicht sicher, was ich mit der Logik bin mit Blick auf so wollte ich sehen, wenn jemand anderes eine andere Perspektive hat.

+0

Vermissen Sie ein '' else' oder CONTINUE nach dem 'if' blockieren? –

+2

Um ein Array zu sortieren können Sie die [std :: sort] verwenden (http://en.cppreference.com/w/cpp/algorithm/sort) Funktion, die harte Arbeit zu tun, und Sie können anstarrt Angeln oder Stern gehen. –

+1

@ Raw N Ich könnte absolut, aber ich versuche, den Algorithmus für mein eigenes Wissen zu verstehen. –

Antwort

0

Ohne Ihnen die gesamte Lösung zu geben, kann ich Ihnen einen Hinweis geben ... Nach dem Ausführen Ihres Programms in einem Debugger, sah ich, dass in Ihrer if-Anweisung in Ihrer inneren for-Schleife überschreiben Sie den Wert des nächsten Elements und es ist für immer verloren; Dies geschieht für jedes Array-Element in der ersten Iteration der äußeren for-Schleife (deshalb erhalten Sie 88 in jedem Element). Sie haben Glück, einen Testfall zur Verfügung gestellt, die :-)

fehlgeschlagen
+0

Ich konnte die Lösung alleine finden und entschied mich für einen komplett anderen Algorithmus. Diese Aussagen waren das Problem, stattdessen behielt ich die Variable im Nest for Loop. Danke übrigens, ich schätze deine Antwort :) –

Verwandte Themen