2013-05-11 61 views
-3

有没有办法拆分数字并将数字存储在int数组中?拆分数字并存储在int数组中

我正在寻找一种方法来从数字中删除一些数字(对于可分算法证明)。

例如,如果我有一个号码12345,我需要执行此操作:

12345 = 1229

有没有办法做到这一点?

+3

'int n = 12345; int diff = n/10 - n%10; cout << diff;' – 2013-05-11 18:16:30

+0

你的意思是你想让数据库中的每个基数十位数字 – aaronman 2013-05-11 18:17:54

+1

术语问题 - 你想从一个整数中取数字,而不是从一个数中取整数(尽管我猜测数字也是整数)。 – Steve314 2013-05-11 18:19:20

回答

3

使用n % 10得到最后一个数字并且n/10得到其他数字。例如,5 = 12345%10,1234 = 12345/10。

Convert integer to array

int array[6]; 
int n = 123456; 
for (int i = 5; i >= 0; i--) { 
    array[i] = n % 10; 
    n /= 10; 
} 

一般来说,vector s的首选在C++中,特别是在这种情况下,因为你可能事先不知道的位数。

int n = 123456; 
vector<int> v; 
for(; n; n/=10) 
    v.push_back(n%10); 

然后v包含{6,5,4,3,2,1}。您可以选择使用std::reverse来反转它。

+0

doh!傻我。谢谢^ _^ – Krzysiek 2013-05-11 18:17:19

+0

你应该比数组更喜欢std :: vector,特别是在这种情况下。 – 2013-05-11 18:34:57

+0

@MichaWiedenmann感谢您的评论。 – Yang 2013-05-11 18:47:49

0

我打算在sudo代码中给你一个答案。

int [] makeArrayFromInt (int input){ 
    arr = new int [floor(log(input)/log(10)) + 1] 
    int index = 0 
    while(input>0){ 
     arr[index]=input%10 
     input=input/10 
     index++ 
    } 
    return arr 
} 

的基本思想是利用国防部10 10获得特定数字的地方,鸿沟值才能到下一个数字。重复这个过程,直到10分为零,因为这是当你达到你的数字结尾。楼(日志(输入)/日志(10))+ 1是一个技巧来找出一个数字拥有多少位数。