Mam program który dodaje, odejmuje i mnoży wielomiany ale w kodzie zrobiłam, że jest to losowy wielomian i nie wiem jak zmienić kod tak żeby to użytkownik mógł wpisać wielomian. Mój kod:
#include <iostream>
#include <cstdlib>
using namespace std;
class Wielomian
{
public:
int n; // stopien wielomianu
double *wsp; // wspolczynniki wielomianu
Wielomian(int _n); // konstruktor
Wielomian(const Wielomian& w); // konstruktor kopiujacy
~Wielomian(); // destruktor
Wielomian& operator=(const Wielomian& _w); // operator przypisania
friend Wielomian operator+(const Wielomian& w1, const Wielomian& w2);
friend Wielomian operator*(const Wielomian& w1, const Wielomian& w2);
friend Wielomian operator-(const Wielomian& w1, const Wielomian& w2);
};
Wielomian::Wielomian(int _n) : n(_n) // konstruktor
{
wsp = new double[n+1];
for (int i=n; i>=0; i--)
{
wsp[i]=rand()%21; // 0..20
wsp[i]-=10; // -10..10
}
}
Wielomian::Wielomian(const Wielomian& w) // konstruktor kopiujacy
{
n=w.n;
wsp = new double[n+1];
for (int i=n; i>=0; i--)
{
wsp[i]=w.wsp[i];
}
}
Wielomian::~Wielomian() // destruktor
{
delete(wsp);
}
Wielomian& Wielomian::operator=(const Wielomian& w) // operator przypisania
{
n = w.n;
for(int i=0; i<=n; i++)
{
wsp[i]=w.wsp[i];
}
return *this;
}
// suma 2 wielomianow
Wielomian operator+(const Wielomian& w1, const Wielomian& w2)
{
int n;
if (w1.n>=w2.n)
{
n=w1.n;
}
else
{
n=w2.n;
}
Wielomian w(n);
w.wsp = new double[w.n+1];
for (int i=w.n; i>=0; i--)
{
w.wsp[i]=w1.wsp[i]+w2.wsp[i];
}
return w;
}
// suma 2 wielomianow
Wielomian operator-(const Wielomian& w1, const Wielomian& w2)
{
int n;
if (w1.n>=w2.n)
{
n=w1.n;
}
else
{
n=w2.n;
}
Wielomian w(n);
w.wsp = new double[w.n+1];
for (int i=w.n; i>=0; i--)
{
w.wsp[i]=w1.wsp[i]-w2.wsp[i];
}
return w;
}
// iloczyn 2 wielomianow
Wielomian operator*(const Wielomian& w1, const Wielomian& w2)
{
Wielomian w(w1.n+w2.n);
for (int i=0; i<=w.n; i++)
{
w.wsp[i]=0;
}
for (int i=0; i<=w1.n; i++)
{
for (int j=0; j<=w2.n; j++)
{
w.wsp[i+j]+= w1.wsp[i] * w2.wsp[j];
}
}
return w;
}
// operator wyjscia
ostream& operator<<(ostream& o, const Wielomian& w)
{
for (int i=w.n; i>=0; i--)
{
o << w.wsp[i] << (i==1 ? "x" : (i==0 ? "" : "x^")) << i << (i<2 ? "\b" : "") << (w.wsp[i-1]<0 ? "" : "+");
}
return o << "\b ";
}
int main()
{
Wielomian* m = new Wielomian(0);
Wielomian* l = new Wielomian(1);
Wielomian* k = new Wielomian(2);
Wielomian* n = new Wielomian(3);
Wielomian* d = new Wielomian(4);
Wielomian* e = new Wielomian(5);
Wielomian* f = new Wielomian(6);
Wielomian* g = new Wielomian(7);
Wielomian* h = new Wielomian(8);
Wielomian* i = new Wielomian(9);
Wielomian* j = new Wielomian(10);
Wielomian y = *f;
Wielomian x = *e;
Wielomian z = x + y;
Wielomian a = x * y;
Wielomian b = x - y;
cout << "pierwszy wielomian: " << x << endl;
cout << "drugi wielomian: " << y << endl;
cout<<"suma=("<<z<<")"<<endl;
cout<<"iloczyn=("<<a<<")"<<endl;
cout<<"roznica=("<<b<<")"<<endl;
return 0;
}