2013-05-11 4 views
-3

int 배열에 숫자와 숫자를 나누는 방법이 있습니까?숫자를 나누어 int 배열에 저장

숫자에서 일부 숫자를 제거하는 방법을 찾고 있습니다 (나누어 진 알고리즘 증명 용). 나는 숫자 12345이있는 경우

예를 들어, 나는이 작업을 수행해야합니다

12345 = 1229

이 할 수있는 방법이 있나요?

+3

'int n = 12345; int diff = n/10 - n % 10; cout << diff;' –

+0

당신은 각 자리에 배열의 한 자리에 10 자리를 넣으려는 것입니까? – aaronman

+1

용어 문제 - 정수에서 숫자를 가져오고 숫자에서 정수를 가져 오지 않으려 고합니다. 숫자도 정수입니다.) – Steve314

답변

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들, 특히 당신이 아마 사전에 숫자의 번호를 알고하지 않기 때문에이 경우, 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

+0

배열의 경우 std :: vector를 선호해야합니다. 특히이 경우에는 특히 그렇습니다. –

+0

@MichaWiedenmann 코멘트 주셔서 감사합니다. – Yang

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으로 나누기 전까지이 과정을 반복하면 숫자가 끝났을 때와 마찬가지로 0이됩니다. Floor (log (input)/log (10)) +1은 숫자가 가지고있는 숫자의 수를 알아내는 속임수입니다.

관련 문제