
Untitled
By: a guest on
Aug 22nd, 2012 | syntax:
C++ | size: 1.85 KB | hits: 9 | expires: Never
#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
#include <string>
#include <list>
#include <utility>
class Polynomial;
class Iterator;
class Polynomial {
public:
/** Constructs an empty Polynomial object list */
Polynomial();
/** Constructs a Polynomial object from two integers, forming one term*/
Polynomial(pair<double c, int i> term);
/** Adds pair of values to Polynomial object list */
void add(const Polynomial& p);
/** Returns Polynomial Object which is the product of this Polynomial and another supplied */
Polynomial multiply(Polynomial input);
/** Returns a Polynomial object as a string in the format of an in-line expression */
void print(Polynomial input);
private:
list<pair<double, int>> terms;
};
#endif
#include "polynomial.h"
#include <iostream>
using namespace std;
Polynomial::Polynomial() {
}
Polynomial::Polynomial(pair<double c, int i> term) {
terms.push_back(term);
}
void Polynomial::add(const Polynomial& p) {
terms.merge(p.terms);
}
Polynomial Polynomial::multiply(Polynomial input) {
Polynomial product;
for (iterator ithis = this->terms.begin(); ithis <= this->terms.end();
ithis++) {
for (iterator iinput = input.terms.begin(); iinput <= input.terms.end();
iinput++) {
pair<double, int> combined;
combined.first() = ithis.first() * iinput.first();
combined.second() = ithis.second() + iinput.second();
product->terms->push_back(combined);
}
}
return product;
}
void Polynomial::print() {
string output;
iterator next =input.terms.begin() + 1;
for (iterator i = input.terms.begin(); i <= input.terms.end(); i++) {
if (i < input.terms.end() && i.first() > 0) {
output + i.first() + "x^" + i.second() + " ";
}
if (i.first() > 0 && i != input.terms.end){
output + "+";
}
next++;
}
cout << output;
}