2016-09-07 32 views
0

我正在編寫一個應該能夠計算出前n-1位數字的產品的程序。
注意:如果高音前兩位數字。如果前兩位的高音產品

輸入4位數字後代碼正常工作,例如:1234,產品爲6。無法弄清楚高音部分

到目前爲止,我想這一點,但沒有解決辦法:

using namespace std; 
int main() 
{ 

int n , sum = 0, s,d,k,w, product ; 
cout <<"Enter number: " << endl; 
cin >> n; 

if ((n>1) && (n<10000)) { 
{ 
s= n/10; 
    d = n/100%10; // 2. 
    k = n/1000%100%10; //1. 
    w = n/10%10; //3. 
//1234 
    product = w*d*k; 


    if ((n>1) && (n<1000)) { 
     s = n/10; 
    d = n/100%10; // 2. 
    k = n/1000%100%10; //1. 
    w = n/10%10; //3. 

    product = k*d; 

} 
    cout <<"Sum of digits inp numb is : " << d+k+w << " and product is : " << product << endl; 

    cout << "w: " << w << " k: " << k << " d: " << d << " s: " << s << endl; 

    } 
} 
    return 0; 
} 
+1

你能更清楚一點'高音'是什麼,我有點困惑,你的意思是三倍? –

+1

我認爲你應該使用一個調試工具 - >和一些筆和紙;)這將有助於你的代碼理解... – retinotop

+1

你的意思是你想要[this]這樣的東西(http://melpon.org/wandbox/ permlink/JIaKlSHnE7vBA9lF)? – MikeCAT

回答

0
if ((n>1) && (n<1000)) { 
     s = n/10; 
    d = n/100%10; // 2. 
    k = n/1000%100%10; //1. 
    w = n/10%10; //3. 

    product = k*d; 

} 

這部分應該是你的「三冠王」的一部分。這條線是問題:

product = k*d;. 

如果n < 1000,則k成爲0%100%10這是0。因此,你的產品是0.我想你的意圖是:

product = w*d; 

對於一般的解決方案,反覆分裂,走模量和運行的產品。像這樣:

n = n/10; 
product = 1; 
while (n > 0){ 
    product = product * (n%10); 
    n = n/10; 
}