返回信息流程序已经写出来了,完成了大数相乘,但是他说要有多行输入,我。。。。怎么实现啊。多行输入多次判断,输入行数还不确定,求助!题目如图,代码如下!
#include<iostream>
#include<cstring>
using namespace std;
//数组逆序
void reverseOrder(char str[], int p,int q)
{
char temp;
while(p<q)
{
temp=str[p];
str[p]=str[q];
str[q]=temp;
q--;
p++;
}
}
//大数相乘
char* multiLargeNum(char a[],char b[])
{
int m=strlen(a);
int n=strlen(b);
char* result=new char[m+n+1];
memset(result,'0',m+n); //将所有元素置换为该字符ASCII码值
result[m+n]='\0';
reverseOrder(a,0,m-1);
reverseOrder(b,0,n-1);
int mulitFlag; //乘积进位
int addFlag; //加法进位
for(int i=0;i<=n-1;i++) //b的每一位
{
int multiFlag=0;
int addFlag=0;
for(int j=0;j<=m-1;j++)//a的每一位
{
//'0'-48=0
int temp1=(a[j]-48)*(b[i]-48)+multiFlag;
multiFlag=temp1/10;
temp1=temp1%10;
int temp2=(result[i+j]-48)+temp1+addFlag;
addFlag=temp2/10;
result[i+j]=temp2%10+48;
}
result[i+m]+=multiFlag+addFlag;
}
reverseOrder(result,0,m+n-1);//逆序回来
return result;
}
//测试主程序
int main()
{
const int N=10000;
char a[N];
char b[N];
cin.getline(a,N,'\n');
cin.getline(b,N,'\n');
char* res=multiLargeNum(a,b);
if(res[0]!=48)
cout<<res[0]<<endl;
cout<<res+1<<endl;
delete []res;
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #95282同步于 2017/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求问一道c++题目
crazyalltnt
2017/5/13镜像同步40 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 chenxiansf 的大作中提到: 】
: getline(cin, s)
我这个目前的程序是要把相乘的两个大叔输入在两行,题中是输入在一行,而且有多组,全部输入完后才显示对应每一行的答案,这个getline(cin,s0不太懂在这怎么用啊,谢谢!
既然是一行那就先getline得到这一行,然后split根据空格拆分就得到了
【 在 crazyalltnt 的大作中提到: 】
: 我这个目前的程序是要把相乘的两个大叔输入在两行,题中是输入在一行,而且有多组,全部输入完后才显示对应每一行的答案,这个getline(cin,s0不太懂在这怎么用啊,谢谢!
我看你这贴的图里题目输入是一行两个数啊,你每次处理时cin两个string不就行了吗
【 在 crazyalltnt 的大作中提到: 】
: 我这个目前的程序是要把相乘的两个大叔输入在两行,题中是输入在一行,而且有多组,全部输入完后才显示对应每一行的答案,这个getline(cin,s0不太懂在这怎么用啊,谢谢!
【 在 chenxiansf 的大作中提到: 】
: 我看你这贴的图里题目输入是一行两个数啊,你每次处理时cin两个string不就行了吗
谢谢,两个数在一行解决了,但只能输入一组就输出了。那这个多行输入完再输出怎么解决,求详细讲解,小白惭愧。[ema23]谢谢
string s1, s2
while (cin >> s1) {
cin >> s2;
// TODO
}
【 在 crazyalltnt 的大作中提到: 】
: 谢谢,两个数在一行解决了,但只能输入一组就输出了。那这个多行输入完再输出怎么解决,求详细讲解,小白惭愧。谢谢
【 在 bond1993 的大作中提到: 】
: 记得原来是默认scanf到一个类似EOF的东西时认为输入结束
但是while输入!=EOF时也是判断每次输入,结果也会在输入后输出啊