|
- #include <iostream>
- #include <stdio.h>
- #include "simplearray.cc"
-
- template <class T>
- class Polynomial: public SimpleArray<T> {
- public:
- // konstruiere Polynom vom Grad n
- Polynomial<T> (int n);
-
- // Default-Destruktor ist ok
- // Default-Copy-Konstruktor ist ok
- // Default-Zuweisung ist ok
-
- // Grad des Polynoms
- int degree();
-
- // Auswertung
- T eval (T x);
-
- // Addition von Polynomen
- Polynomial<T> operator+ (Polynomial<T> q);
-
- // Multiplikation von Polynomen
- Polynomial<T> operator* (Polynomial<T> q);
-
- // Gleichheit
- bool operator== (Polynomial q);
-
- // drucke Polynom
- void print ();
- };
-
- // Constructor
- template <class T>
- Polynomial<T>::Polynomial(int n)
- : SimpleArray<T>::SimpleArray(n+1,0.0) {}
-
- // Grad auswerten
- template <class T>
- int Polynomial<T>::degree ()
- {
- return SimpleArray<T>::maxIndex();
- }
-
- // Addition von Polynomen
- template <class T>
- Polynomial<T> Polynomial<T>::operator+ (Polynomial<T> q) {
- int nr=degree(); // mein grad
-
- if (q.degree()>nr) nr=q.degree();
-
- Polynomial r(nr); // Ergebnispolynom
-
- for (int i=0; i<=nr; i=i+1)
- {
- if (i<=degree())
- r[i] = r[i]+(*this)[i]; // add me to r
- if (i<=q.degree())
- r[i] = r[i]+q[i]; // add q to r
- }
-
- return r;
- }
-
- // Multiplikation von Polynomen
- template <class T>
- Polynomial<T> Polynomial<T>::operator* (Polynomial<T> q)
- {
- Polynomial r(degree()+q.degree()); // Ergebnispolynom
-
- for (int i=0; i<=degree(); i=i+1)
- for (int j=0; j<=q.degree(); j=j+1)
- r[i+j] = r[i+j] + (*this)[i]*q[j];
-
- return r;
- }
-
- // Drucken
- template <class T>
- void Polynomial<T>::print ()
- {
- if (degree()<0)
- std::cout << 0;
- else
- std::cout << (*this)[0];
-
- for (int i=1; i<=SimpleArray<T>::maxIndex(); i=i+1)
- std::cout << " + " << (*this)[i] << "*x^" << i;
-
- std::cout << std::endl;
- }
-
- int main() {
- Polynomial<float> p(2);
- p[0] = 1.0;
- p[1] = 1.0;
- p.print();
-
- p = p*p;
- p.print();
-
- Polynomial<double> q(3);
- q[0] = 2.0;
- q[1] = -1.0;
- q[3] = 4.0;
- q.print();
- }
|