For-Anweisung, mal wieder!
-
Denkanstoss:
Annahme: Vektor hat die Grösse 5.
Letzter Schleifendurchlauf: i hat Wert 4 -- j hat Wert 5
Worauf greifst du nun mit Additions_Zahlen[j] zu?
-
huhu
ach verdammt xD
ja bin schon etwas müde und das auf 15 min hinbatzen dabei kommt sowas raus
aber ich wüsst jetzt ausm stehgreif keine lösung... höchstens ne 2. for schleife... mit j als variable >:D
bin ja noch Neuling
Prog_mux
-
Im letzten Durchlauf ist Additions_Zahlen[j] out of bounds.
edit: ok, vorm beantworten von schon länger geöffneten Threads nochmal auf f5 drücken...
-
@ prog_mux du musst einfach die Schleife bis size -1 laufen lassen.
-
huhu
Ja klar aber hab ich dann nich das problem das ich dann pracktisch immer das gleiche plus nehm? also zb:
Additions_Zahlen[1] + Additions_Zahlen[1]
das will ich ja nich
sorry nochmal wenn ich mich grad blöd anstell wie gesagt
Mux
-
for (int i = 0; i < Additions_Zahlen.size(); i++) { int j = i+1; Additions_Zahlen[i]+Additions_Zahlen[j] = ergebnisAddition; };- Gewöhne dir das Präinkrement an. Ein Präinkrement ist bei user-defined types schneller.
- Der Block einer for-Schleife muss nicht mit einem Semikolon abgeschlossen werden.
- Spare dir die temporäre Zwischenvariable j und schreibe stattdessen direkt:
ergebnisAddition = Additions_Zahlen[i]+Additions_Zahlen[i+1];- Gewöhne dir an, Namen von Objekten mit einem Kleinbuchstaben beginnen zu lassen. Das liest sich dann viel leichter.
- Gewöhne dir an, auf Englisch zu programmieren. Wenn schon Deutsch, dann vergib sinnvollere Namen als "Additions_Zahlen" (Welcher übrigens besser als "additions_zahlen" oder "additionsZahlen" geschrieben wird).
- Geschwungene Klammern haben ihre eigene Zeile verdient. -> Lesbarkeit
Meine Lösung mit einer Schleife würde dann wohl so aussehen:
int sum = numbers.front(); for(std::vector<int>::iterator iter = numbers.begin() + 1; iter != numbers.end(); ++iter) sum += *iter + *(iter - 1);Edit: Keine Ahnung, was deine Schleife eigentlich bringt, hab das mal so auf die Schnelle runtergetippt. Keine Garantie auf Fehlerfreiheit.
-
huhu
also erstmal danke für deine tipps, bin für sowas immer offen
aber wegen der namen, es is ein taschenrechner das hielt ich das für angebracht^^
Mux
-
Mal etwas grundlegendes: Im Kopf einer for-Schleife for(...;...;...) verwendet man nur Dinge, die beim Einstieg in die Schleife bereits bekannt sind. Sonst verwendet man besser eine while-Schleife.
Ich möchte deinen Code ungern nachvollziehen! 
-
berniebutt schrieb:
Mal etwas grundlegendes: Im Kopf einer for-Schleife for(...;...;...) verwendet man nur Dinge, die beim Einstieg in die Schleife bereits bekannt sind. Sonst verwendet man besser eine while-Schleife.
Ich möchte deinen Code ungern nachvollziehen! 
Worauf bezieht sich das?
-
hab ich mich auch grad gefragt

ja der code is wirklcih etwas durcheinander
-
An meinem Code ist nichts durcheinander, eine normale for-Schleife über einen Container.
C++0x ist da super:
for(auto& elem : container) do_something_with_elem;
-
nein meiner
deiner is ja gut 
-
ich dachte da spontan an <algorithm> .. google liefert sowas http://stackoverflow.com/questions/3221812/sum-of-elements-in-a-stdvector