C++-Code funktioniert nicht?
Ich habe eine Funktion geschrieben, welche mir alle ungeraden Stellen aus einem String addiert. Egal wie ich die for-Schleife in der Funktion ändere, selbst mit Hilfe von ChatGPT, kommt nie das erhoffte Ergebnis raus. Ich habe meiner Meinung nach schon alles ausprobiert und es wäre nett wenn jemand mal über den Code gucken würde und mir vielleicht eine verbesserte Variante zeigt ^^.
Hier sind die Input-Daten und das erhoffte Ergebnis:
card_number = 123456789123
erhofftes Ergebnis: 27
PS: Die Variable card_number ist vom Typ String und das erhoffte Ergebnis ändert sich je nach Eingabe einer anderen card_number.
Mit freundlichen Grüßen
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.
Stimmt da ist mir ein Fehler untergelaufen, ich muss ab 1 durchiterieren ^^
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).
Und wie kommst du auf 29, wenn die erste Stelle bereits ungerade ist und in die Menge gehört?
Korrekt. Dieser Algorithmus wird nur mit DIESER Kartennummer funktionieren. Ein Pseudoalgorithmus wäre daher:
pauschal den zähler um 2 erhöhen wird nur klappen, wenn sichergestellt ist, dass alle 2 ziffern eine ungerade ziffer kommt.