【C++】顺序表实现多项式加法运算

题目:

请使用顺序表实现两个多项式的加法运算,其中多项式的项按指数从高到低排列。例如3x^2-x+2输入形式为3  2  -1  1  2  0

 

测试样例:

样例1:

输入样例:

3  4  2  3  1  2(第一个多项式)

-2  3  4  2  5  1  6  0(第二个多项式)

输出样例:

3  4  5  2  5  1  6  0求和结果)

样例2:

输入样例:

3  10000  2  1

2  100  -2  1  1  0

输出样例:

3  10000  2  100  1  0

//顺序表实现多项式加法
//author:Mitchell_Donovan
//date:2021.3.9
#include<iostream>
using namespace std;

template<class T>
class arrList {
private:
	T* number;
	int maxSize;
public:
	arrList(const int size) {
		maxSize = size;
		number = new T[maxSize];
		for (int i = 0; i < maxSize; i++) {
			number[i] = 0;
		}
	}

	~arrList() {
		delete[] number;
	}

	void print() {
		int i = 0;
		for (i = maxSize-1; i > 0; i--) {
			if (number[i] != 0) {
				break;
			}
		}
		if (i == 0) {
			cout << "f(x)=0" << endl;
		}
		else{
			cout << "f(x)=" << number[i] << "x^" << i;
			for (; i-1 >= 0 ; i--) {
				if (number[i-1] != 0) {
					cout << " + " << number[i-1] << "x^" << i-1;
				}
			}
		}
	}
	bool setValue(const T numberValue,const T indexValue);
	void add(arrList<T> a, arrList<T> b);
};

template<class T>
bool arrList<T>::setValue(const T numberValue, const T indexValue) {
	number[indexValue] += numberValue;
	return true;
}

template<class T>
void arrList<T>:: add(arrList<T> a, arrList<T> b) {
	for (int i = 0; i < maxSize-1; i++) {
	number[i] = a.number[i] + b.number[i];
	}
}




int main() {
	arrList<int> La(10001), Lb(10001), Lc(10001);
	int size;
	int number, index;
	cout << "请输入第一个多项式的项数:" << endl;
	cin >> size;
	cout << "请输入各项和其指数:" << endl;
	for (int i = 1; i <= size; i++) {
		cin >> number >> index;
		La.setValue(number, index);
	}
	cout << "请输入第二个多项式的项数:" << endl;
	cin >> size;
	cout << "请输入各项和其指数:" << endl;
	for (int i = 1; i <= size; i++) {
		cin >> number >> index;
		Lb.setValue(number, index);
	}
	Lc.add(La, Lb);
	Lc.print();
}

 

猜你喜欢

转载自blog.csdn.net/Mitchell_Donovan/article/details/114808211
今日推荐