2012-01-31 12 views
1

私は2つの整数をとるプログラムを作成しようとしています。その後、プラス記号とマイナス記号と数字を分割してベクトルに保存します。最後に、これらの2つの整数を追加したいと思います。私はintをベクトルに分割することができ、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++のプログラマーはいません*ここでは*読者はいません*。 –

+0

私はこのまったく同じ質問が1時間以上前に尋ねられたと誓ってもらえましたが、今はもう一つの質問を見つけることができません... –

+0

私のコードは正常に動作するようになりました。私が持っているような問題は、ターミナルがベクトルサイズを印刷せずに閉じてしまうことです。それはなぜですか? – Konsal

答えて

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

a場合、これはちょうどadigits20をプッシュしますループが一度も実行される前に、すでに、ゼロ未満です。

論理を再考してください。 bdigitsループにも同じ欠陥があります。

+0

私は今参照してください。ループ条件を abs(a)> 0に変更するだけです。右? – Konsal

+0

@ user1179375モジュラス演算子( '%')が負の数でどのように動作するか知っている限り:-)。ループ直前に – Borealid

+0

がabs(aとb)に変更されました。 :P – Konsal

関連する問題