Wieso funktioniert dieser einfache C-Code nicht?
Hallo,
ich schreibe zur Übung gerade ein Programm, dass die Werte, die einem Array zugewiesen wurden, umtauschen soll.
Also der erste Wert soll als letztes gespeichert werden und der letzte Wert als erstes:
Es wird auf den 9. Speicherort im Array zugegriffen (10) und von diesem wird dann i abgezogen.
Der Code funktioniert bis zu der sechsten Zahl:
Aber warum nur bis zur sechsten?
Hier der Code:
#include <stdio.h>
void zahlenAusgabe(int Z[])
{
for (int i = 0; i < 10; i++) {
printf("%d\n", Z[i]);
}
}
int main()
{
int zahlen[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < 10; i++) {
zahlen[i] = zahlen[9 - i];
}
zahlenAusgabe(zahlen);
return 0;
}
Die Lösung ist:
2 Antworten
Weil Du ein Swap machen mußt. Du kopierst den Wert um und überschreibst den bisherigen einfach.
Was Du aber algorithmisch willst:
Speichere ersten Wert, ersetze durch letzten Wert, speichere gesicherten Wert als letzten Wert. Nun wiederhole für 2. und vorletzten - usw. usf. .
Hahaha 😂😂😂
ok du startest bei i = 0
du nimmst den Platz 9 schreibst ihn auf den nullten Platz im Array.
was passiert jetzt aber wenn du mit i bei 9 bist. Dann nimmst du den nullten Platz den du vorhin überschrieben hast und schreibst ihn dahin wo er vorhin war.