Angenommen, ich habe
%Vor%Wie teile ich die ganze Zahl "n" in zwei Hälften.
Hinweis: Die Gesamtzahl der Ziffern in n
ist immer ein Vielfaches von 2, zB 1234, 4567, 234567, 345621 usw. Alle haben 2,4,6,8 Ziffern .
Ich möchte sie in zwei Hälften teilen.
Ich versuche mit folgendem Code, aber es funktioniert nicht, die Variable y
hält irgendwie den umgekehrten zweiten Teil.
Wenn Eingabe ist:
n = 123456;
Ausgabe, die ich bekomme:
Erste Hälfte = 123
Zweite Hälfte = 654
Ausgabe möchte ich:
Erste Hälfte: 123
Zweite Hälfte: 456
Hier ist ein Demonstrationsprogramm. Es verwendet keine Funktion außer printf :) So ist es die einfachste Lösung.
%Vor%Die Programmausgabe ist
%Vor%Wenn Sie einen vorzeichenbehafteten Integer-Typ und negative Zahlen verwenden möchten, kann das Programm folgendermaßen aussehen:
%Vor%Seine Ausgabe ist
%Vor%Dies kann durch Division eines Modulusoperators mit dem Dividierer erfolgen, dh 10 (NumberOfDigits / 2) .
%Vor%Eine andere Möglichkeit:
%Vor%erzeugt die Ausgabe von
%Vor%Der einfachste Weg dazu ist die Funktion sprintf . Dies nimmt einen Wert und formatiert es gemäß dem angegebenen Spezifizierer. Sobald Sie Ihre Ganzzahl als eine Zeichenfolge dargestellt haben, nehmen Sie einfach jede Hälfte Ihrer Zeichenfolge. Mit sscanf kehren Sie den Prozess auf Integer zurück.
%Vor%Eine weitere Variante der Verwendung von Strings für die Aufteilung:
%Vor%Einige Beispiele laufen:
%Vor%Sie haben nicht erwähnt, ob Werte positiv sein müssen oder nicht, oder ob führende Nullen gegen die Anzahl der Stellen zählen (da es als Integer-Wert und nicht als String gelesen wird, gibt es nach der Konvertierung keine führenden Nullen).
Dieser Code hat für mich den Vorteil der Einfachheit. Wir behandeln die Zahl im Wesentlichen als eine Reihe von Ziffern, um die Mitte aufzuteilen, so dass (zumindest meiner Meinung nach) die Verwendung von String-Operationen am einfachsten schien. Leistungsmäßig sollte dies nicht langsamer sein als mit log
, um die Ziffern zu erhalten und durch sie zu durchlaufen.
Da dies ein Problem bei Zahlen, genauer gesagt ganzen Zahlen, zu sein scheint, sollten Sie weder Zeichenfolgen noch Gleitkommaoperationen verwenden.
%Vor% Hier enthält n
die obere Hälfte der Ziffern, lower_half
die unteren Ziffern.