Probiers mal mit der Modulo funktion, dann kannst du die Zahl als Integer einlesen und die einzelnen Zahlen addieren.
Probiers mal mit der Modulo funktion, dann kannst du die Zahl als Integer einlesen und die einzelnen Zahlen addieren.
Ich geb dir mal nenkleinen Tip, wie du das auch mit Integer-Werten hinbekommen kannst
Das Stichwort lautet: Modulo 10.
Weiterhin möchte ich dir keine Lösung hinklatschen, sondern will vielmehr, dass du dir selber Gedanken machst
edit:
Zu spät. Verdammt, das kommt davon, wenn man immer alle neuen Threads aufmacht und dann nich refreshed^^
Ich liebe mein Beil!
Wenn ich dein Code Benutz k0rxxx
kommt:
Run-Time Check Failure #3 - The variable 'b' is being used without being initialized.
ehm, ich lern grad noch das is Kapitel 3 bisher hab ich was von Arrays und ehm... ausgabe eingabe... mehr net also formulierts pls so das es jemand versteht, der GERADE das 3. Kapitel lernt... das ihr folgen könnt:
http://www.highscore.de/cpp/einfuehrung/index.html
Oder einfach eine Integer einlesen und so vorgehen:
while( eingabe > 0 )
{
quersumme += eingabe % 10;
eingabe /= 10;
}
Damit sparst du dir die Strings und bist nicht auf eine bestimme Länge der Zahl angewiesen. (Abgesehen vom Wertebereich deines Datentyps natürlich.)
~noctem
Edit://Ups, da war ich doch glatt zu spät.
Edit2://
Vielleicht solltest du zusätzlich zu C++ noch Englisch lernen.Run-Time Check Failure #3 - The variable 'b' is being used without being initialized.
Die Meldung kommt, da er die Variable b nicht initialisiert (ihr einen "Anfangswert" zuweist). Somit addiert er die Quersumme auf einen Wert, der zufällig noch an der Adresse von b steht. Die Variable sollte also mit einer 0 initialisiert werden, um die Addition nicht zu verfälschen.
Geändert von noctem (30.06.2010 um 14:02 Uhr)
noctem{aet}jabber.ccc.de
s1ckst4r, dann initialisiere die variablen halt
nuffing
ok das könnte stimmen glaub ich O_o aber wenn ich in Kapitel 3 die aufgabe bekomm sowas zu machen muss ichs ja normal schon gelernt haben, und des while also schleifen kommt ers in 4.4 oder so dran ... also muss iwie die Quersummer errechnet werden nur mit
cin,cout,swap,iwas_cast<variable>, und halt die low dinger...
Weil wenn es in Kapitel 4 am ende wär, würd ichs warschienlich mit der while schleife au können *ville* ^^
Hier noch mit einer Char Variable, ist zwar nicht so "schön" aber was läuft, das läuft:
Achja, kleine erkärung:Code:int b; char a[4]; cout << "Eine 4 Stellige Zahl eingeben" << endl; cin >> a; b = a[0] + a[1] + a[2] + a[3] - 48*4; cout << b << endl; system("PAUSE");
am Ende die "- 48*4" kommen daher, weil durch diese Art des Umwandelns (char zu int) nicht die Zahl ausgegeben wird, sondern die Ascii Position(Zahl an welcher Position dieses Zeichen ist) Um nun daraus die Zahlen zu bekommen, müssen wir nur in der Ascii Tabelle gucken, wo die Zahl 0 beginnt, bei 48.
Wenn wir jetzt die Zahl 1 suchen in einer Ascii Tabelle sehen wir, es hat die 49, die Zahl 2 hat die 50 usw.
Heißt wenn wir 48 jeweils von 4 Zahlen abziehen, bekommen wir das richtige Ergebnis
Geändert von Perishand (30.06.2010 um 14:12 Uhr)
Es ist sogar schöner, da man gleich auf ganzzahligkeit und Länge 4 prüfen kann.
Vielleicht ein wenig unglücklich formuliert... Es geht nicht um die Position im String, sondern um die kodierung des Zeichens (in dem Fall der Ziffer) in ASCIIl.sondern die Ascii Position(Zahl an welcher Position dieses Zeichen ist)
Interessante Idee, aber ob man erst die einzelnen ASCII werte addiert und dann 4x48 subtrahiert, oder das subtrahieren gleich macht, macht keinen Unterschied. Man sollte bei dem Code jedoch möglichst nah an der "menschlichen" vorgehensweise bleiben, vor allem wenn das Programm zu Lernzwecken dient.Heißt wenn wir 48 jeweils von 4 Zahlen abziehen, bekommen wir das richtige Ergebnis
Solange man weiß, dass es den Ascii Wert nicht direkt ausgibt, sondern halt 48 "zu viel", kann man das ja auch in einem machen, anstatt - 48 - 48 - 48 - 48 zu schreiben