PAT A 1002

在这里插入图片描述
以下是在平台运行通过的代码:

#include<iostream>
#include<string>
#include<stdlib.h>
#include<math.h>
#include<iomanip>
using namespace std;
class Polynomial
{
public:
	Polynomial();
	~Polynomial();
	Polynomial(int num);
	void add_Polynomial(Polynomial a , Polynomial b);
	void show();

private:
	int num; //当前多项式中非零项的个数
	double coef[1001];//index对应相应的阶数,相应的值对应相应阶数的值
};

Polynomial::Polynomial()
{
	num = 0;
	for (int i = 0; i < 1001; i++)
	{
		coef[i] = 0;
	}
}

Polynomial::~Polynomial()
{
}
Polynomial::Polynomial(int Num)
{
	int index;
	num = Num;
	for (int i = 0; i < 1001; i++)
	{
		coef[i] = 0;
	}
	while (Num)
	{
		cin >> index;
		cin >> coef[index];
		Num--;
	}
	
}
void  Polynomial::add_Polynomial(Polynomial a, Polynomial b)
{
	
	for (int i = 0; i < 1001; i++)
	{
		coef[i] = a.coef[i] + b.coef[i];
	}
	int count = 0;
	for (int j = 0; j < 1001; j++)
	{
		if (coef[j] != 0)
		{
			count ++;
		}
	}
	num = count;
	
}
void Polynomial::show()
{
	if (num == 0)//考虑0的特殊情况,如果是非零系数总共为0个,输出0之后不能有空格
	{
		cout << num;
	}
	else
	{
		cout << num << " ";
	}
	int count = 0;
	for (int i = 1000; i >= 0; i --)
	{
		if (coef[i] != 0)
		{
			count++;
			if (count == num)//当输出最后一组的指数和系数时后面不能加空格,因此此处也需要分情况
			{
				cout << i << " " << setiosflags(ios::fixed) << setprecision(1) << coef[i];
			}
			else
			{
				cout << i << " " << setiosflags(ios::fixed) << setprecision(1) << coef[i] << " ";
			}

			
		}
	}
}
int main()
{
	//FILE *streams;
	//freopen_s(&streams,"D://hl/temp/input.txt", "r", stdin);
	//freopen_s(&streams, "D://hl/temp/output.txt", "w", stdout);//输出重定向
	int a, b;
	cin >> a;
	Polynomial result_a;
	result_a = Polynomial(a);
	cin >> b;
	Polynomial result_b;
	result_b = Polynomial(b);
	Polynomial c = Polynomial();
	c.add_Polynomial(result_a, result_b);	
	c.show();
	//system("pause");//防止VS中控制台应用程序闪退问题
	return 0;
}

需要注意的:
1.题目中给出的变量范围,以便给出正确的数组大小,比如这道题,最初我把指数的范围看错了,所以刚开始定义的数组大小给错了。
2.另外需要注意非零系数个数的特殊情况,主要是空格的问题,在代码中也有注释,以及最后一组指数和系数输出后是没有空格的,容易出现格式错误。

整个代码的实现会有些复杂,希望经过不断练习后可以精简代码。

发布了11 篇原创文章 · 获赞 0 · 访问量 258

猜你喜欢

转载自blog.csdn.net/weixin_40852277/article/details/101035036