C ++ char向量加法

时间:2013-11-30 00:02:08

标签: c++ vector

这是我编写的程序的一部分,用于计算将两个整数添加为字符串。 (编写我自己的bigInt类)。

当我将两个整数加在一起时似乎有问题。因为它们都在char类型的向量中,所以我必须在向量的每个元素之前添加'0',然后将其连接成一个字符串。

然而,结果仍然不是我所期望的: enter image description here

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
    string const Number = "1000";
    string const Number2 = "1000";
    vector<char> reverse;
    vector<char> reverse2;

    //cout << (rostrNumber[1] - '0') << endl;
    cout << "Original Number: " << Number << endl;
    reverse.clear();
    for (int i = Number.size() - 1; i >= 0; i--)
    {
        reverse.push_back(Number[i]);

    }
    cout << "Reversed: " << endl;
    cout << reverse[0] << reverse[1] << reverse[2] << reverse[3] << endl;
    cout << endl << endl;

    reverse2.clear();
    {
        for (int i = Number2.size() - 1; i >= 0; i--)
        {
            reverse2.push_back(Number[i]);
        }
    }

    cout << "Adding these two integers" << endl;

    vector<char> const rcvN1 = reverse;
    vector<char> const rcvN2 = reverse2;
    vector<char> Results;

    Results.clear();

    //Local copies
    vector<char> vN1 = rcvN1;
    vector<char> vN2 = rcvN2;
    int iSize1 = vN1.size();
    int iSize2 = vN2.size();
    int i, iSize = iSize2;

    int iC = 0, iR;
    for (i = 0; i<iSize; i++)
    {
        iR = vN1[i] + vN2[i] + iC;

        if (iR > 9)
        {
            iR -= 10;
            iC = 1;
        }
        else
            iC = 0;

        Results.push_back(iR);
        cout << Results[0] << endl;
    }

    if (iC > 0)
        Results.push_back(iC);

    string ostr;
    vector<char>::const_reverse_iterator rIter = Results.rbegin();
    for (; rIter != Results.rend(); rIter++)
        ostr += *rIter +'0';

    cout << "Results: " << ostr << endl;

    system("PAUSE");
    return 0;
}

0 个答案:

没有答案