Frage von Kirra1, 61

Wie funktioniert dieser Programmteil (C)?

Hallo,

ich kann den Teil, welchen ich mit rot gekennzeichnet habe (siehe Bild), nicht verstehen.

Die Lösung für das Programm ist folgende:

for (i=2; i < 7; i++){strcpy(warenkorb[i].bezeichnung, warenkorb[i+1].bezeichnung);warenkorb[i].preis = warenkorb[i+1].preis;if (warenkorb[i].bezeichnung[0] == '#') {                                /* optional */break;}}

Wir wollen den 3. Artikel löschen, aber die entsprechende Lösung verstehe ich nicht! Warum wird die Schleife mit i = 2 angefangen?!? Wir wollen den 3. Artikel löschen, also warenkorb[2].

Kann mir bitte jemand das erklären?

Antwort
von PWolff, 30

Die Indizes von Arrays fangen bei 0 an.

D. h. das erste Element hat den Index 0, das zweite Element den Index 1 usw.

Der Index gibt an, wie viele Schritte man vom Anfang an weitergehen muss, um beim gewünschten Element zu landen.

Im Alltag haben wir so was ähnliches bei Uhrzeiten - 00:15 heißt, dass von der Stunde Nr. 0 des Tages 15 Minuten vergangen sind. Das ist aber die erste Stunde des Tages.

Man macht dies vor allem deshalb, weil man hiermit viel leichter rechnen kann und auf Dauer viel weniger leicht durcheinander kommt.

Ein Gegenbeispiel, wo man leicht durcheinander kommt, sind Intervalle in der Musik:

Eine Prime ("prima" wörtl. übersetzt "erste") ist das Intervall von einem Ton zum selben Ton. Eine Sekunde (zweite) das Intervall zum folgenden Ton. Eine Oktave (achte) das Intervall zum 8. Ton, das sind 7 Töne aufwärts.

Wenn man jetzt zwei Terzen ("dritte") aufeinander folgen lässt, z. B. C - E - G, erhalten wir eine Quinte ("fünfte"); dies lässt sich nicht so ohne weiteres aus 3 + 3 erklären. Und eine Oktave lässt sich in eine Quarte und eine Quinte aufteilen, aber 8 ist nicht dasselbe wie 4 + 5.

Kommentar von Kirra1 ,

das war nicht so hilfreich :(

Kommentar von PWolff ,

Sorry, einfacher krieg ich es jetzt nicht hin.

Bei i=2 werden die Werte von warenkorb[i] überschrieben, damit wird der 3. Eintrag überschrieben.

Die Werte werden aus warenkorb[i+1] geholt, das ist der 4. Eintrag.

Stell dir vor, du hast 8 Whiteboards nebeneinander stehen.

Du wischst aus, was auf dem 3. steht und schreibst dort ab, was auf dem 4. steht.

Dann wischst du aus, was auf dem 4. steht und schreibst ab, was auf dem 5. steht.

usw.

Vergiss aber nicht, als letztes das 8. Whiteboard auszuwischen.

Antwort
von andie00, 31

i=2 ist der dritte Artikel im (Warenkorb) Array, der Erste hat die Nummer 0

Kommentar von Kirra1 ,

danke, aber das weiss ich schon

Kommentar von Tschoo ,

dann ist doch alles klar, wenn du es schon weist, deswegen i=2 und die "höheren werden "vorgeschoben"

Antwort
von J0T4T4, 10

Deutsch ist neben C nicht so Deine Sprache, oder?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten