C++-Code funktioniert nicht?

3 Antworten

Die Summenvariable ist nicht initialisiert und wird dementsprechend irgendeinen Anfangswert enthalten. (Da würde ich eigentlich eine Conpilerwarnung erwarten.)

Desweiteren solltest du dir überlegen, was du mit geraden und ungeraden Stellen meinst. Derzeit startest du bei Index 0 und gehst immer um 2 weiter.


TheQ86  05.08.2024, 17:15

Korrekt. Dieser Algorithmus wird nur mit DIESER Kartennummer funktionieren. Ein Pseudoalgorithmus wäre daher:

definiere summenvariable und setze auf 0
für alle Zeichen in Kartennummer {
    wenn ist_ungerade(zeichen als zahl) {
        summenvariable += zahl
    }
}

pauschal den zähler um 2 erhöhen wird nur klappen, wenn sichergestellt ist, dass alle 2 ziffern eine ungerade ziffer kommt.

2
jo135  05.08.2024, 17:17
@TheQ86

Ich verstehe es so, dass ungerade Indizes gemeint sind. Aber ob das FS auch so meint, keine Ahnung. 🤷

2
TheQ86  05.08.2024, 17:19
@jo135

stimmt, er sprach von ungeraden Stellen. In dem Falle müsste aber die for schleife bei index 1 anfangen, sonst erwischt er die Geraden.

0
jo135  05.08.2024, 17:25
@TheQ86

Ist halt Definitionsfrage, ob man mit 0 oder 1 zu zählen beginnt.

0
BlackMagickWicc 
Beitragsersteller
 05.08.2024, 22:17
@TheQ86

Stimmt da ist mir ein Fehler untergelaufen, ich muss ab 1 durchiterieren ^^

0

Ein String enthält ASCII-Zeichen. Die Ziffer '0' hat den Wert 48, die weiteren Ziffern folgen lückenlos. Summiere die Werte (card_number[i] - '0'), dann sollte es passen. Mit Buchstaben oder Sonderzeichen funktioniert das natürlich nicht.

Und vergiss die Initialisierung von sum_odd_digits nicht.

erhofftes Ergebnis: 27

... ich würde das erhoffte Ergebnis nochmals prüfen (ich komme da auf 29).


cleanercode  05.08.2024, 19:38

Und wie kommst du auf 29, wenn die erste Stelle bereits ungerade ist und in die Menge gehört?

0