0
Add two polynomial a [ ], b[ ] in a polynomial c[ ] can any one answer
5 Réponses
+ 1
not sure if you mean to get polynomial c as the sum of polynomials a and b. if so, very easy if you store the coefficients of the polynomial in an array. just add the corresponding elements of the two array.
+ 1
unfortunately, it does not allow to post the full code (too large, I suppose). so, I will post the code in parts.
 
Part 1:
/*This is just a crude implementation of the solution to give an idea of how to proceed. There are definitely better ways to do this, but this works just fine*/
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
vector<double> split(string str, char delimiter = ' ')
{
	size_t start = 0, end = 0;
	string temp;
	vector<double> result;
	
	while(end != string::npos){
		start = str.find_first_not_of(string(1, delimiter), start);
		end = str.find(delimiter, start);
		if(start != end){
			temp = str.substr(start, (end == string::npos) ? str.size() : end);		
			start = end + 1;
			//double num = stod(temp);					//you need c++11 and above to use the function stod
			double num = strtod(temp.c_str(), NULL);			//if your compiler does not support c++11, then use strtod, you have to include the header file "cstdlib"
			result.push_back(num);
		}
	}
	return result;
}
void printPolynomial(vector<double> polynom)
{
	for(int i = polynom.size() - 1; i > 1; i--){
		if(polynom[i]){							//we won't print terms with zero coefficients
			cout << showpos << polynom[i];
			cout << noshowpos << "x^" << i;			
		}
	}
	if(polynom[1]){
		cout << showpos << polynom[1] << "x";
	}
	if(polynom[0]){
		cout << polynom[0];
	}	
	cout << endl;
}
+ 1
Part 2:
int main()
{
	cout << "The polynomials should be entered in the format (a0 a b c d ...) where a0, a, b, c,... are the coefficients of the monomials x0, x, x^2, x^3... (reverse order for easy computation). For example, the polynomial -7x^5 + 8x^3 - 0.5x^2 + 9 should be entered as 9 0 -0.5 8 0 -7" << endl;
	cout << "Enter polynomial A: " << endl;
	
	string input1, input2;
	getline(cin, input1);
	cout << "Enter polynomial B: " << endl;
	getline(cin, input2);
	
	char delimiter = ' ';							//The character separating coefficients, you can change it to whatever you want
	vector<double> polynom1 = split(input1, delimiter);
	vector<double> polynom2 = split(input2, delimiter);
	vector<double> polynom3;
	
	int size1 = polynom1.size();
	int size2 = polynom2.size();
	
	int maxSize = (size1 > size2) ? size1 : size2;
	
	polynom3.resize(maxSize); 		//set the size of polynomial C
	
	//pad the smaller polynomial with zeros
	if(size1 < maxSize){
		polynom1.resize(maxSize);
	} 
	else if (size2 < maxSize){
		polynom2.resize(maxSize);
	}
	
	for(int i = 0; i < maxSize; i++){
		polynom3[i] = polynom1[i] + polynom2[i];		
	}
	
	cout << "Polynomial A: ";
	printPolynomial(polynom1);
	
	cout << "Polynomial B: ";
	printPolynomial(polynom2);
	
	cout << "Polynomial C = A + B:\n";
	printPolynomial(polynom3);
	
	return 0;
}
0
could you write the code is c++, please?
0
thank you so much 😊



