这个程序麻烦实现A+B,请大神指点

zzzhangxl 2013-03-12 05:29:19
#include<iostream>
#include<string>
using namespace std;
int num;

void main()
{
cin>>num;
string * A=new string[num],* B=new string[num];
string * pri=new string[num];
for(int i=0;i<num;i++)
{
cin>>A[i]>>B[i];
char C;
int f=0;
for(int k=A[i].length()>B[i].length()?A[i].length()-1:B[i].length()-1;k>-1;k--)
{
C=A[i][k]+B[i][k]-48+f;
f=0;
if(C>57)
{C=C-10;f=1;}
pri[i]+=C;
}
pri[i]+=char(48+f);
}
for(int j=0;j<num;j++)
{
cout<<"Case "<<j+1<<":\n";
cout<<A[j]<<" + "<<B[j]<<" = ";
if(pri[j][(int)pri[j].length()-1]=='1')
{
cout<<'1';
}
for(int m=(int)pri[j].length()-2;m>-1;m--)
{cout<<pri[j][m];}
cout<<"\n\n";
}
}
...全文
211 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
梁玉武 2013-03-13
  • 打赏
  • 举报
回复
牛人还是挺多的嘛
zzzhangxl 2013-03-13
  • 打赏
  • 举报
回复
引用 1 楼 qitair 的回复:
程序的可读性不好。能不能说清楚程序的功能?是实现字符串的并置还是什么啊?48,54的是神马东东
就是就算A+B,A和B的长度是不受限制的,可能有1000位。num输入的是算式的数量.
zzzhangxl 2013-03-13
  • 打赏
  • 举报
回复
引用 4 楼 ForestDB 的回复:
不过这次是C++版本的,看来C++做OJ的题还不错,省了不少事。 C/C++ code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747……
very good!比我的算法好一些。但是carry在被置一之后没有及时的回零,这样假如某一位有进位之后全部都有进位了,不知道我说的对不对。
ForestDB 2013-03-13
  • 打赏
  • 举报
回复
关于carry自己想。 实在想不通就想想小时候是怎么对位算的。
ForestDB 2013-03-12
  • 打赏
  • 举报
回复
不过这次是C++版本的,看来C++做OJ的题还不错,省了不少事。

# include <iostream>
# include <string>
# include <vector>

using namespace std;

string add(string & aa, string & bb)
{
    string a(aa.rbegin(), aa.rend());
    string b(bb.rbegin(), bb.rend());
    vector<char> r;
    size_t i = 0;
    int carry = 0;
    int tmp;
    while (i < a.length() && i < b.length())
    {
        tmp = (a[i] - '0') + (b[i] - '0') + carry;
        r.push_back(tmp % 10 + '0');
        if (tmp >= 10)
            carry = 1;
        i++;
    }
    while (i < a.length())
    {
        tmp = (a[i] - '0') + carry;
        r.push_back(tmp % 10 + '0');
        if (tmp >= 10)
            carry = 1;
        i++;
    }
    while (i < b.length())
    {
        tmp = (b[i] - '0') + carry;
        r.push_back(tmp % 10 + '0');
        if (tmp >= 10)
            carry = 1;
        i++;
    }
    if (carry > 0)
        r.push_back(carry + '0');
    string rr(r.rbegin(), r.rend());
    return rr;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        string a, b, r;
        cin >> a >> b;
        r = add(a, b);
        cout << "Case " << i + 1 << ":\n";
        cout << a << " + " << b << " = " << r << "\n\n";
    }

    return 0;
}

4
1 2
112233445566778899 998877665544332211
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 1
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110

Case 3:
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1 = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Case 4:
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 = 1999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998


ForestDB 2013-03-12
  • 打赏
  • 举报
回复
看上去很像前两天我回过的一个帖子。
ForestDB 2013-03-12
  • 打赏
  • 举报
回复
问题的解决从格式化代码开始:


# include <iostream>
# include <string>

using namespace std;

int num;

void main()
{
    cin >> num;
    string * A = new string[num], * B = new string[num];
    string * pri = new string[num];
    for (int i = 0; i < num; i++)
    {
        cin >> A[i] >> B[i];
        char C;
        int f = 0;
        for (int k = A[i].length() > B[i].length() ? A[i].length() - 1 : B[i].length() - 1; k > -1; k--)
        {
            C = A[i][k] + B[i][k] - 48 + f;
            f=0;
            if (C > 57)
            {
                C = C - 10;
                f = 1;
            }
            pri[i] += C;
        }
        pri[i] += char(48 + f);
    }
    for (int j = 0; j < num; j++)
    {
        cout << "Case " << j + 1 << ":\n";
        cout << A[j] << " + " << B[j] << " = ";
        if (pri[j][(int)pri[j].length() - 1] == '1')
        {
            cout << '1';
        }
        for (int m = (int)pri[j].length() - 2; m > -1; m--)
        {
            cout << pri[j][m];
        }
        cout << "\n\n";
    }
}
chonggy 2013-03-12
  • 打赏
  • 举报
回复
程序的可读性不好。能不能说清楚程序的功能?是实现字符串的并置还是什么啊?48,54的是神马东东

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧