Zerlegung einer Zahl in ihre Ziffern
-
cin>>zahl;
cout<<zahl/10000<<'\n';//erste ziffer
cout<<zahl/1000%10<<'\n';//zweite ziffer
-
Hallo, vielen dank. Also meine Idee war(Beispiel):
42339 / (10^4) = 4 42339 % (10^4) = 2339
2339 / (10^3) = 2 2339 % (10^3) = 339
339 / (10^2) = 3 42339 % (10^2) = 39
39 / (10) = 3 42339 % (10) = 9.
Ich wusste einfach nicht wie man dies in C++ code einbindet.
# include <iostream>
using namespace std;int main ()
{
int Zahl;cout << "Bitte eine fuenfstellige ganze Zahl eingeben:";
cin >> Zahl;cout<<Zahl/10000<<'\n'; //erste ziffer
cout<<Zahl/1000%10<<'\n'; //zweite ziffer
cout<<Zahl/100%10<<'\n'; //dritte ziffer
cout<<Zahl/10%10<<'\n'; //vierte ziffer
cout<<Zahl/1%10<<'\n'; // fünfte ziffer}
Nun habe ich ein problem mit Buchstaben.
# include <iostream>
using namespace std;int main ()
{
int Zahl;cout << "Bitte eine fuenfstellige ganze Zahl eingeben:";
cin >> Zahl;if(Zahl <='A' ||Zahl <='a')
{
cout << "Bitte eine fuenfstellige ganze Zahl eingeben:";
cin >> Zahl;
}else
cout<<Zahl/10000<<'\n'; //erste ziffer
cout<<Zahl/1000%10<<'\n'; //zweite ziffer
cout<<Zahl/100%10<<'\n'; //dritte ziffer
cout<<Zahl/10%10<<'\n'; //vierte ziffer
cout<<Zahl/1%10<<'\n'; // fünfte zifferif wird irgend wie ignoriert... beim Buchstabeneingabe wird das programm terminiert..
-
Schau dir mal die ASCII-Tabelle an.
kleiner Denkanstoß:
while ('A' <= zahl && zahl <= 'Z')Für kleine Buchstaben musst es jetzt aber selber machen.
Gruß
Don06
-
Hi, ich würde es viel einfacher machen !!!
#include <iostream.h> #include <string.h> using namespace std; int main(void) { int eingabe; char ascii[100]; cout << "Bitte eine 5stellige Zahl : "; cin >> eingabe; sprintf(ascii, "%g" ,(double) eingabe) ; cout << "1. Zeichen : " << ascii[0]; cout << "2. Zeichen : " << ascii[1]; cout << "3. Zeichen : " << ascii[2]; cout << "4. Zeichen : " << ascii[3]; cout << "5. Zeichen : " << ascii[4]; return 0; }Ob ein Buchstabe drin is oder net kannste ja wie lösen wie Don06

Gruß Chris
-
Hallo, Chris danke für deine Hilfe. Mit arrays kann ich leider noch nicht anfangen. Der aufgabe nach muss ich die Modulo- und divisionsoperatoren benutzen. Danke.
Gruß, Vitaly.
-
heute wurde hier schon mal fast dieselbe frage gestellt:
scroll mar runter zum thread
"nur 4stellige Integerzahlen zwischen 1 und 6 zulassen, wie?"
oder gug hier
http://www.c-plusplus.net/forum/viewtopic-var-t-is-178314.html
schau dir die beispiele mal genau an, lässt sich bestimmt einiges wiederverwerten... wenn du den code verstanden hast, wird es dir nichts ausmachen, ihn für deine problemstellung anzupassen.schau dir ausserdem in der doku die funktionen "isdigit" und "iswdigit" an, da kannst du direkt feststellen, ob die eingabe nur aus zahlen besteht oder nicht.
good luck have fun.
-
mit modulo 10 letzte zahl abtrennen. erst modulo anwenden dann ist es auch egal wieviel stellen die zahl hat.
1234 % 10 ergibt 4 , das ergebnis (speichern-ausgeben- was du auch damit vorhast) und abziehen von 1234 ergibt 1230, dann durch 10 teilen
1230 / 10 ergibt 123
123 % 10 = 3 ... 123 - 3 = 120 ... usw.das ganze iterativ (schleife), oder rekursive funktion einsetzen mit abbruchbedingung wenn null.
zahlen in anderen systemen, also andere basiszahl, meintewegen binär mit basis 2 sind analog zu rechnen. % 2 und / 2
-
die aufgabenstellung lautet aber nur, in ein kommentar zu schreiben, was passiert, wenn ein buchstabe eingegeben wird - und dient auch irgendwie dem vertrautmachen mit dem debugger.
zu prüfen, ob ein buchstabe eingegeben wurde oder nicht ist nicht gefragt.
und den kommentar von Foxx90 vergisst du am besten ganz schnell wieder

-
Foxx90 schrieb:
sprintf(ascii, "%g" ,(double) eingabe) ;Hat es einen bestimmten Grund, daß du das als double formatierst? sprintf() kann auch int's direkt ausgeben

-
#include <iostream> using namespace std; void print_digits (long v) { long z; if (z = v/10) print_digits (z); cout << "ziffer: "; putchar ('0' + v-z*10); cout << endl; } int main() { long eingabe; cout << "Bitte eine 5stellige Zahl : "; cin >> eingabe; print_digits (eingabe); }
-
ne hat keinen bestimmten grund, so ist aber das programm auch für komma zahlen geeignet... !
sonst :
sprintf(char*, "%i" , integer);