2012-03-10 57 views
1

你能幫我嗎?我儘量處理陳述,但我無法編寫程序。如何用C++分隔給定整數的數字?

給定一個整數,例如12564897,程序必須證明它1-2-5-6-4-8-9-7

你如何用C++檢測。非常感謝。

我試着用五位數的整數。

int z,y,x,result,number1,number2,number3,number4,number5; 
cout<<"Enter a five digit integer: "; 
cin>>result; //read number 

cout<<"The number is: "<<result<<endl; 

number1 = result/10000; 

x = result/1000; 
number2 = x % 10; 

y = result/100; 
number3 = y % 10; 

z = result/10; 
number4 = z % 10; 

number5 = result % 10; 

cout<<"digits are: "<<number1<<"-"<<number2<<"-"<<number3<<"-"<<number4<<"-"<<number5<<endl; 

system("pause"); 
return 0; 

}

+7

您嘗試過什麼?向我們展示一些代碼,告訴我們你的理念是什麼。 – 2012-03-10 10:06:52

+2

發佈您到目前爲止所嘗試的內容,否則這些團隊中有經驗的開發人員可能會得出結論,您只是使用我們來完成您的整個家庭作業。有幾種方法 - 將數字串化並按字符分割或者可以使用迭代/遞歸分割。 – 2012-03-10 10:12:36

+0

我嘗試了5位數字。 – 2012-03-10 12:28:11

回答

0

將您的整數爲字符串,然後打印該字符串的每個字符之間用-

0

這是從相反的順序打印出整數的程序片段。 你可以修改它以適合您的需要(這是你的家庭作業)

//Read input number 
cin >> dInput; 
//Calculate log10 
int logValue = (int)log10(dInput); 

//Iteration through n-th power of 10 
for(int i = logValue; i >= 0; i--) { 
    //Calculate actual power of 10 
    double d = pow(10,(double)i); 

    int n = (int)dInput/d; 

    //Subtract remainder from previous number 
    dInput -= (n * d); 

    //Print out "-" 
    cout << n; 
    if(i != 0) << "-"; 
} 
+2

去浮點和返回不是一個好主意,國際海事組織。 – 2012-03-10 10:43:04

+0

@David Schwartz,很好的評論,你說得對,我發佈的這段代碼很早以前就已經被創建,以演示如何使用log10分解十進制數。 – rkosegi 2012-03-10 10:46:48

0

爲了得到一些數量n的最低位,計算n % 10

要獲得左邊的下一位數字,首先執行n /= 10,然後重複上述步驟。

,以此類推,直到n當由10

劃分最終變爲0,反向的收集數字序列。

要將一位數字轉換爲字符,請將'0'添加到該字符中。

4

我認爲最聰明的方法是創建一個循環,除以十(或基數)並打印餘數,然後除以十,然後再做。在preudo代碼:

let a = input 
let base = 10 
do 
{ 
    store a mod base in result 
    a = (integer) a/base; 
}while(a>0) 
print result reversed 

mod是求餘運算符(% in C/C++) 請注意,通過改變基礎薩德你可以有位在

+0

好的答案!請注意,有一種特殊情況下,您的算法當前不輸出任何內容:當輸入爲0時 – stakx 2012-03-10 11:07:37

+0

感謝您的幫助Felice Pollano和我已經嘗試了您的給定代碼,但是我做錯了,因爲它沒有工作。 cout <<「輸入一個整數:」; cin >>結果; counter = 10; (數量> 0) x =結果/ 10; number = x%10; } cout << number << endl; – 2012-03-10 13:27:47

+0

@kubra你可以詳細說明它,因爲它是功課,請注意,因爲stakx說,0情況:) – 2012-03-10 13:39:47

0

我想過寫代碼本身數量的任何表示,但因爲它是一門功課,我給你的想法,讓你的代碼它

首先,你會使用sprintf功能

然後你會做一個整數,整數轉換爲字符串具有字符串的大小。讓它成爲小號

然後你會成爲一個for循環,

i=1, i < S, i+=2

i從1開始的 - 放在的第一個字符

在那個循環,你會在我的位置插入字符,然後你會更新inte ger S與大小。如果你沒有更新它,下面(例如)會發生

12345 (size = 5) 
1-2345 (size = 5, real size = 6) 
1-2-345 (size = 5, real size = 7) 

它會停在這裏。由於條件我< 5將失敗

就是這樣。祝你好運。

0

OK,因爲每個人都已經有了一展身手,這是我的嘗試:

void outInt(int inInt){ 
    int dividend; 
    dividend=inInt/10; 
    if (dividend!=0){ 
    outInt(dividend); 
    cout<<"-"<<inInt%10; 
    } 
    else 
    cout<<(inInt); 
}; 

「顛倒打印結果」不需要。應該爲0而不打印任何' - ',小於10的數字。

相關問題