2012-01-31 96 views
1

所以,我試圖建立一個程序,需要2個整數。稍後,它將加號/減號和數字分開並將它們保存到矢量中。最後,我想添加這兩個整數。我設法將整數分成向量,vector.size()給了我正確答案,儘管我無法打印它們。任何有關如何使整數增加的線索? 謝謝,添加整數分裂成向量

這是我到目前爲止的代碼:

#include <iostream> 
#include <vector> 
#include <cmath> 

using namespace std; 

int 
main(){ 
cout<<"Give 2 integers.\n"; 
int a,b; 
cin>>a; 
cin>>b; 

vector<int> adigits; 
//10 for positive, 20 for negative integer 
adigits.push_back(a<0 ? 20:10); 
    a=abs(a); 
    while(a>0){ 
    adigits.push_back(a%10); 
    a=a/10; 
} 

    vector<int> bdigits; 
    //10 for positive, 20 for negative integer 
    bdigits.push_back(b<0 ? 20:10); 
    b=abs(b); 
    while(b>0){ 
    bdigits.push_back(b%10); 
    b=b/10; 
    } 

vector <int>::size_type c; 
vector <int>::size_type d; 
c=adigits.size(); 
d=bdigits.size(); 

    cout<<c; 
    cout<<d; 

return 0; 
} 
+1

*我的代碼無法處理它*它顯示的行爲是什麼?它應該表現出的行爲是什麼?只有* C++程序員*這裏沒有*頭腦讀者*。 – 2012-01-31 06:07:09

+0

我可以發誓這個完全相同的問題剛剛問了一個多小時,但現在我找不到其他問題... – 2012-01-31 06:12:05

+0

我現在的代碼行爲正常。我似乎有一個問題,終端關閉時沒有打印矢量大小,爲什麼? – Konsal 2012-01-31 06:26:56

回答

0
adigits.push_back(a<0 ? 20:10); 
while(a>0){ 
    adigits.push_back(a%10); 
    a=a/10; 
} 

這將只需按下一個20adigits如果a已經小於零,循環執行甚至一度之前。

重新思考你的邏輯; bdigits循環具有相同的缺陷。

+0

我現在看到。我所要做的就是將我的環路條件更改爲 abs(a)> 0。對? – Konsal 2012-01-31 06:13:56

+0

@ user1179375只要你知道模運算符('%')如何表現負數:-)。 – Borealid 2012-01-31 06:15:11

+0

在循環之前更改爲abs(a和b)以確保。 :P – Konsal 2012-01-31 06:19:19