Umkehrung einer Zahl mit führenden Nullen
Wie können wir das umkehren einer Zahl mit führenden Nullen in der Nummer ?
Für ex: Wenn der Eingang ist 004,
Ausgabe sollte sein 400.
Schrieb ich unter Programm, aber es funktioniert nur, wenn Sie keine führenden Nullen in der Eingabe.
int num;
cout<<"Enter number "<<endl;
cin>>num;
int rev = 0;
int reminder;
while(num != 0)
{
reminder = num % 10;
rev = rev * 10 + reminder;
num = num / 10;
}
cout<<"Reverse = "<<rev<<endl;
Gibt es eine Möglichkeit, nach Eingabe einer Zahl mit führenden Nullen ? Selbst dann, Über Logik funktioniert nicht bei solchen zahlen.
Irgendeine einfache Lösung ? Es ist machbar, indem die Eingabe als string und-Verarbeitung. Aber das sieht nicht schön aus.
*EDIT: Wenn die Länge der Nummer bekannt ist, erscheint es möglich sein, das umkehren einer Zahl mit führenden Nullen. (Ohne string)*
Werde ich nach dem code, sobald es funktioniert.
EDIT 2: ich habe versucht, um wieder Zeichen zu cin-stream und Lesen Sie und berechnen Sie die Rückseite. Es ist für 2-stellige zahlen.
Aber wenn Länge bekannt ist, seine weit einfacher zu finden, umzukehren. Alles, was ich zu tun ist, multipliziert mit 10 für die erforderliche Anzahl von Zeiten.
Also ich denke, ich würde mit string-Ansatz.
In der Hoffnung, dass interviewer würde mich freuen 🙂
- Wenn Sie möchten, dass führende Nullen in Ihrem Eingang, dann haben Sie ziemlich viel über die Eingabe als string.
- Sieht nicht schön?! Eh? 🙂 Das ist mit Abstand die einfachste Methode-Sie brauchen noch nicht einmal zu faff um mit der tatsächlichen Anzahl, wie Sie tun, über. Die einzige Sorge, die mit dem string-Ansatz scheint zu prüfen, ob der input tatsächlich für eine Zahl-aber das ist nicht gerade schwer. Was ist das problem genau?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führende Nullen werden nicht dargestellt durch Binärzahlen (
int
,double
usw.) So werden Sie wahrscheinlich auch anstd::string
. Die Eingabe in den string, dann rufen Siestd::reverse()
übergeben der Zeichenfolge als Eingabe.std::reverse()
war wahrscheinlich der echte Frage.Ja, müssen Sie eine Zeichenfolge verwenden. Sie können nicht speichern Sie die führenden Nullen in einer int.
std::deque<int>
,std::list<char>
,class Digit09 {...}; std::stack<Digit09>;
. Und ich finde nicht den Punkt, wo er meint er muss einen string. Möglicherweise ein edit kann ich nicht sehen?Wenn Sie wissen, die gesamte Breite, die Sie möchten, die Anzahl der vor-hand, Sie können den code wiederverwenden, Sie haben und speichern Sie die Ergebnisse (von rechts nach Links) in einem null-array initialisiert. Hinweis: würden Sie wahrscheinlich wollen, um einige Fehler zu überprüfen, um Sie den unten aufgeführten code.
Wird diese ermöglichen es Ihnen, zu manipulieren, die Zahl leichter in die Zukunft.
Lesen Sie die Zahl in string format (that is, std::string) und in umgekehrter Zeichenfolge.
Sobald Sie konvertieren Sie Ihre Eingabe auf eine Ganzzahl, die du in Zeile 3, alle Informationen über die führenden Nullen in der Eingabe des Benutzers verloren.
Müssen Sie eine Zeichenfolge verwenden.
Einen rekursiven Ansatz, aber einfach in einer Schleife...
Als ChrisF, sagte, müssen Sie zum laden einer Zeichenfolge, da 4 und 004 ist der gleiche int und Sie können nicht unterscheiden, Sie weisen Sie, nachdem Sie es zu einem
int
variable.Das nächste, was zu tun ist, schneiden Sie die Zeichenfolge enthalten nur Ziffern (wenn Sie wollen, um korrekt zu sein), und führen Sie
std::reverse
drauf - und fertig.std::istream::operator>>
.Behalten Sie die Zahl als string ein, und verwenden Sie
std::reverse
.Ersetzen Sie Ihre
while
Schleife mit einemfor
Schleife mit der gleichen Anzahl von Läufen, wie Sie möchten, die ursprüngliche Zahl hat Ziffern (einschließlich führender Nullen). z.B. 004 erfordern würde, die die Schleife ausgeführt werden 3 mal, und nicht vorzeitig zu beenden, sobaldx == 0
.Rückseite in einer der besten lang Python.