Integer in zwei separate Ganzzahlen aufteilen

8

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.

%Vor%

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

    
Prateek 14.08.2015, 18:45
quelle

7 Antworten

9

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%     
Vlad from Moscow 14.08.2015, 19:02
quelle
2

Hier ist eigentlich, was ich tun würde

%Vor%     
soueuls 14.08.2015 18:55
quelle
2

Dies kann durch Division eines Modulusoperators mit dem Dividierer erfolgen, dh 10 (NumberOfDigits / 2) .

%Vor%     
Grzegorz Szpetkowski 14.08.2015 19:10
quelle
1

Eine andere Möglichkeit:

%Vor%

erzeugt die Ausgabe von

%Vor%     
Richard Chambers 14.08.2015 19:36
quelle
0

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%     
mfrankli 14.08.2015 18:58
quelle
0

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.

    
John Bode 14.08.2015 21:25
quelle
-1

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.

    
quelle

Tags und Links