(1002 A+B for Polynomials)PAT甲级试题,我的代码为何在提交时运行出错,求帮帮忙

weixin_45386203 2019-07-31 09:56:57
#include<iostream>
#include<iomanip>
using namespace std;
class Array {
public:
double coe;
int exp;
Array(int x = 0, double y = 0.0) : coe(y) ,exp(x){}
};
int main() {
int m, n, i = 0, j = 0,k=0;
Array* a, * b, c[20];
cin >> m;
a = new Array[m];
for (int i = 0; i < m; i++) {
cin >> a[i].exp >> a[i].coe;
}
cin >> n;
b = new Array[n];
for (int i = 0; i < n; i++) {
cin >> b[i].exp >> b[i].coe;
}
do
{
if (a[i].exp > b[j].exp)
{
c[k].exp = a[i].exp;
c[k].coe = a[i].coe;
i++;
}
else if (a[i].exp < b[j].exp)
{
c[k].exp = b[j].exp;
c[k].coe = b[j].coe;
j++;
}
else
{
c[k].coe = a[i].coe + b[j].coe;
c[k].exp = a[i].exp;
i++, j++;
}
k++;

} while (i < m || j < n);
if(i==m&&j!=n)
for (; j < n; j++, k++)
{
c[k].exp = b[j].exp;
c[k].coe = b[j].coe;
}
else if(j==n&&i!=m)
for (; i < n; i++, k++)
{
c[k].exp = a[i].exp;
c[k].coe = a[i].coe;
}
cout << k << " ";
for (int i = 0; i < k-1; i++)
cout << c[i].exp << " " << c[i].coe<<" ";
cout<< c[k-1].exp << " " << c[k-1].coe<<endl;
delete[] a;
delete[] b;
return 0;
}
...全文
35 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Italink 2019-07-31
  • 打赏
  • 举报
回复
因为指数在区间[1,1000],多项式求和,相同指数可以相加,那么只需要用指数当做数组的下标,直接对对应下标的值进行累加(初始化为0),后面输出即可,你的代码样例没过,没看懂你后面的循环再看嘛
仅供参考

#include<iostream>
using namespace std;
int main() {
double N[1001] = {0}, m;
int k, max = 0, tmp, count=0; //max为多项式的最大指数
for (int i = 0; i < 2; i++) {
cin >> k;
for (int j = 0; j < k; j++) {
cin >> tmp >> m;
max = tmp > max ? tmp : max;
N[tmp] += m;
}
}
for (int i = 0; i <= max; i++) {
if (N[i] != 0)
count++;
}
cout << count;
if (count > 0) {
for (int i = max; i >=0; i--) {
if (N[i] != 0)
printf(" %d %0.1lf",i, N[i]);
}
}
return 0;
}

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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