klasa Wielomian- problem z programem

0

Witam, mam problem z programem i potrzebuję Waszej pomocy. Poniżej umieszczam polecenie oraz sam program, którym staram się zrealizować to polecenie, jednak wiem, że zrobiłem kilka błędów i nie bardzo umiem je naprawić.

Zaprojektuj klasę wielomian, reprezentującą wielomian dowolnego zadanego stopnia. Klasa powinna zawierać metody implementujące typowe operacje na wielomianach (dodawanie, odejmowanie, mnożenie). UWAGA: wykorzystaj klasę kontenerową vector<> z biblioteki standardowej.
Zdefiniuj metody tej klasy wielomian. Zapewnij zgłaszanie wyjątków. Inicjuj zmienne przed użyciem. Sprawdzaj warunki początkowe i końcowe.

 #include <iostream>
#include <vector>
using namespace std;
 
int main()
{
class Wielomian
{
vector<double>wsp;

private:
    int n;                          // stopien wielomianu
    double *wsp;                    // wspolczynniki wielomianu

public:
    Wielomian(int _n);              // konstrktor, inicjacja obiektu
    Wielomian(const Wielomian& w);  // konstruktor kopiujacy
    ~Wielomian;                     // destruktor
    Wielomian& operator=(const Wielomian& _w); // operator przypisania
 
    friend Wielomian operator +(const Wielomian& A, const Wielomian& B);
    friend Wielomian operator *(const Wielomian& A, const Wielomian& B);
    friend Wielomian operator -(const Wielomian& A, const Wielomian& B);
};
 
Wielomian::Wielomian(int _n) : n(_n + 1) // konstruktor
{
        wsp= new double[n];
        srand(time(NULL));
        for (int i= n-1; i>= 0; ++i)
        {
                wsp[i] = rand() % 21;
                wsp[i] -= 10;
        }
}
 Wielomian::Wielomian(const Wielomian& w) // konstruktor kopiuj
 {
    n= w.n;
    wsp= new double[n];
 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;
}
 Wielomian operator+(const Wielomian& A, const Wielomian& B) // suma wielomianow
{
    int n;
 if (A.n>=B.n)
    {
        n=A.n;
    }
    else
    {
        n=B.n;
    }
 Wielomian w(n);
    w.wsp = new double[w.n];
  for (int i=w.n; i>=0; i--)
{
        w.wsp[i]=A.wsp[i]+B.wsp[i];
}
 return w;
}
 Wielomian operator-(const Wielomian& A, const Wielomian& B) // roznica wielomianow
{
	int n;
 if (A.n>=B.n)
 {
	 n=A.n;
 }
 else
 {
	 n=B.n;
 }
 Wielomian w<n);
 w.wsp= new double[w.n];
 for (int k=w.n; k>=0; k--)
 {
	 w.wsp[k]=A.wsp[k]-B.wsp[k];
 }
return w;
 }
Wielomian operator*(const Wielomian& A, const Wielomian& B) // iloczyn wielomianow
{
	Wielomian w(A.n+B.n); 
for (int i=0; i<=w.n; i++)w.wsp[i]=0;   
	for (int i=0; i<=A.n; i++)
{
    for (int j=0; j<=B.n; j++)
{
	w.wsp[i+j]+= A.wsp[i] * B.wsp[j];
}}
	return w;
}
ostream& operator<<(ostream& o, const Wielomian& w) //operator wyjscia
{
    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 y= *x;
    Wielomian z= *x + y;
	Wielomian h= *x - y; 
 
    cout<< "x:     " << *x << endl;
    cout<< "y:     " << y << endl;
    cout<< "z=x+y\nz:     " << z << endl;
    cout<< "x=z'\nx:     " << *x << endl;
    cout<< "h=x-y\nz:     " << h << endl;
 
    return 0;
}

Bardzo Was proszę o pomoc w uzupełnieniu braków i poprawieniu błędów. Pozdro!

0

Po co Ci tablica wsp i vector wsp? :-/

0

#o co chodzi z tym main na początku?
#to co napisał Endrju, duplikujesz dane

class Wielomian
{
private:
    vector<double>wsp;
 
public:
    Wielomian(int _n, double leadingElement = 1.0);              // konstrktor, inicjacja obiektu

    friend Wielomian operator +(const Wielomian& A, const Wielomian& B);
    friend Wielomian operator *(const Wielomian& A, const Wielomian& B);
    friend Wielomian operator -(const Wielomian& A, const Wielomian& B);
};

Korzystając z vector z automatu masz właściwe (nawet lepsze niż gdybyś sam napisał): konstruktor kopiujący, destruktor i operator przypisania, więc nie musisz ich definiować! Pozostaje ci tylko zdefiniować operatory.
Popatrz jak działa vector.

1 użytkowników online, w tym zalogowanych: 0, gości: 1