C++, Klausurfrage Index?

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.

Bild zum Beitrag

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 
 - (Informatik, Universität, Programmiersprache)

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


Hamoudiwood 
Fragesteller
 27.09.2023, 18:49

Danke sehr trotzdem. ich werde mich mit dem Professor in Verbindung setzten

1

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.