Potrzebna pomoc w tworzeniu wielomianu c++

0

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;
    }

1

Czekaj... Napisałas program używając klas, konstruktora, destruktora, referencji, wskaznikow i nie wiadomo czego jeszcze a nie wiesz jak... wprowadzić dane? A tak swoją drogą - chyba cięzko znaleźć gorszy algorytm niż ten, ktory gdzieś znalazłaś i nam tu wkleiłaś.

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