2015-06-09 50 views
-2

我有一個int數組,名爲doubledNumbers,如果此數組中的數字大於9,我想將這些數字一起添加。 (例如,16將成爲1 + 6 = 7,12將成爲3,14將成爲5等)如何抓取int數組中int的第一個數字?

可以說,我在doubledNumbers具有以下數字:

12 14 16 17 

我想改變doubledNumbers到:

3 5 7 8 

我不確定如何爲int數組做到這一點,因爲我得到的錯誤

無效類型 'INT [INT]' 的數組下標

這是代碼我有(在for環拋出):

if (doubledNumbers[i]>9) { 
     doubledNumbers[i]=doubledNumbers[i][0]+doubledNumbers[i][1]; 
+3

這是因爲'int'是一個'int'。如果你想使用'operator []',把它轉換成類似數組的東西。另外,'29'應該變成什麼? '2'還是'11'?如果它是前者,則有一個更簡單的方法 - 只需將模數「9」返回,邊界情況爲「9」的倍數。 – Pradhan

+2

[C中使用遞歸的數字總和]的可能重複(http://stackoverflow.com/questions/18523521/sum-of-digits-using-recursion-in-c) –

+0

29會變成11.我不確定你的意思是 - 數組。[x] [y]把數組x取出它的第y個字符? – Marisa

回答

-1
int A[2]; 
A[0] = 2; 
A[1] = 10; 
for (int i=0;i<2;i++) { 
    if (a[i] > 9) { 
     int b = a[i]%10; 
     int c = a[i]/10; 
     int d = b+c; 
     cout << d; 
    } 
} 

這只是爲兩位數字(10 -99)以及更多(99後),我們將不得不改變邏輯。

+3

C++區分大小寫。這不會編譯。 –

2

int中沒有什麼像十進制數字。有(大多數是32或64)二進制數字(位)和2的基數與10的基數不相稱。您需要將您的數字除以10以獲得小數位數。

unsigned int DigitSum(unsigned int input, unsigned int base = 10) 
{ 
    unsigned int sum = 0; 
    while(input >= base) 
    { 
     sum += input % base; 
     input /= base; 
    } 
    sum += input; 
    return sum; 
} 

我用unsigned int。該示例不能直接用於負數,但修改並不困難。

1

您可以使用類似這樣

#include <iostream> 
using namespace std; 
int sumofdigits(int); 
int main() 
{ 
    // your code goes here 
    int a[5] ={12,14,15,16,17}; 
    for(int i=0;i<5;i++) 
    { 
     int m=sumofdigits(a[i]); 
     cout <<m<<" "; 
    } 
     return 0; 
} 
int sumofdigits(int n) 
{ 

     int sum=0; 
     while(n!=0) 
     { 
      int d=n%10; 
      sum=sum+d; 
      n=n/10; 
     } 
     return sum; 
} 

//%運算符用於計算剩餘部分。

0
You can do like this, 

#include<iostream> 
#include <string> 
#include <sstream> 
using namespace std; 
int main() 
{ 
    int a[5]={1,2,5,11,12}; 
    int length = sizeof(a)/sizeof(int); 
    for(int i=0;i<length;i++) 
    { 
     if (a[i] >9) 
     { 
       stringstream ss; 
       ss << a[i]; 
       string a1 = ss.str(); 
       const char * s = a1.c_str(); 
       int sum=0; 
       while (*s !='\0') 
       { 
         cout<<*s<<endl; 
         sum += (*s - '0'); 
         s++; 
       } 
       cout<<"num:"<< sum <<"\n"; 
     } 
    } 
} 
相關問題