006
09.01.2016, 22:45 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von dummyC: |
nach mehrmaligem suchen probieren etc komme ich leider nicht drauf wo der fehler ist wie gesagt bin absoluter anfänger
|
Okay, also die mehrfache Ausgabe kommt daher, dass Du Schleife zum ausgeben innerhalb der Sortierschleife des Bubblesort hast. Die muss aber dahinter.
Zitat von ~f.-th.: |
Hatte erst auch die Vermutung wie Hans, das die Ausgabe auf ein nicht definiertes Feld zugreift.
|
Was durch einen Debugger auch bestätigt wird. - Jedenfalls zeigt mir der OpenWatcom Debugger das so an.
Der Fehler, den ~f.-th. meint, dürfte das int temp; innerhalb der Schleife sein. Das sollte man besser davor definieren, weil es sonst innerhalb der Schleife bei jedem durchlauf neu erzeugt wird. Also:
C++: |
for (int i2 = 0; i2 <= n; i2++) // bubblesort { int temp; ... // sonstiger Code }
|
ergibt im Speicher 3 mal die Variable temp, wobei jede nur einmal benutzt wird. Besser ist es, wenn man das so macht:
C++: |
int temp; for (int i2 = 0; i2 <= n; i2++) // bubblesort { ... // sonstiger Code }
|
@~f.-th.: Kann natürlich sein, dass der Compiler das so optimiert, dass temp doch nur einmal existiert, aber wenn ich mich nicht irre, muss das ja nicht so sein.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |