C++, Klausurfrage Index?
Hallo, kann mir einer bitte sagen warum meine Tabelle falsch ist. und was wäre die richtige Antwort?
mfg
danke im voraus
3 Antworten
Ausgehend von der Startreihung kommt bei mir diese 6 Zeilen als Zwischensortierung heraus.
Die innere Schleife für jeden Index endet immer dann wenn ein kleineres Element gefunden und an die richtige Stelle platziert wurde.
Hier der zugehörige VBA Code. Nicht wundern. Auf einem Tabellenblatt muss der Index bei "2" Starten, da der kleinste Wert für eine Zellekoordinate die "1" ist.
Public Sub MySort()
Dim Zeile, Spalte
Dim Eintrag
Dim pos
Zeile = 2
Dim index As Integer
For index = 2 To 7
Eintrag = Cells(1, index).Value
pos = index
Do While pos > 1
If Cells(1, pos - 1).Value > Eintrag Then
Cells(1, pos).Value = Cells(1, pos - 1).Value
pos = pos - 1
Else
Exit Do
End If
Loop
Cells(1, pos).Value = Eintrag
Range(Cells(Zeile, 1), Cells(Zeile, 7)).Value = Range("A1:G1").Value
Zeile = Zeile + 1
Next i
End Sub
also wenn keiner hier will...
Der Code ist schon ziemlich bekloppt... aber das sind sie in Prüfungsfragen ja immer ;-)
Gehen wir das ding also mal Schritt für Schritt durch... (das ist übrigends kein C++, sondern Pseudocode ;-) )
Für index=1 bis länge-1 // index = 1; länge = 6
eintrag = wert[index] // wert[1] = 6 = eintrag
pos = index // pos = 1
SOLANGE pos > 0 UND wert[pos-1] > eintrag // pos ist immer größer 0; wert[0] = 42 > eintrag = 6 (== TRUE)
werte[1] = werte[0] = 42
pos = pos - 1
werte[0] = eintrag // werte[0] = 6
-----------------------------------------
6, 42, 27, 38, 28, 18, 4
Und siehe da... ich habe das selbe Ergebnis wie du...
Wenn das wirklich falsch ist... kann ich dir nicht sagen warum, sry
Danke sehr trotzdem. ich werde mich mit dem Professor in Verbindung setzten
Ich habe mir nur die erste Zeile angeschaut, die sieht okay aus.
Wenn man den Hinweis liest und sieht, daß der Algo entgegen der Behauptung natürlich vergleichsbasiert arbeitet, muß man sich die Frage stellen, ob ggf. die erwartete Lösung fehlerhaft ist.