witam, musze zrobic program w c++, ktory dodaje, odejmuje, mnozy dwa wielomiany i wyswietla wynik.
Robie to na vectorach z wykorzystaniem przeciazenia operatorow +.
Program sie kompiluje, wpisuje dwa wielomiany i wyskakuje blad przy dodawaniu.
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
wiem, ze cos zwalilem z tym operatorem, ale nie wiem co. prosze o pomoc/naprowadzenie
#include <iostream>
#include <vector>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Wielomian
{
private:
vector<int>wsp;
int n;
public:
Wielomian(int w); // konstruktor
Wielomian(){};
void wyswietl(){ //wyswietlanie wielomianu
int i;
for(i = wsp.size()-1; i >= 0; i--){
if(wsp[i]>=0){
cout << "+";
}
cout << wsp[i] << "x^" << i <<" ";
}
}
void wyswietl1(){
cout << wsp.size();
}
friend Wielomian operator +(const Wielomian& A, const Wielomian& B);
};
Wielomian::Wielomian(int w){//konstruktor, inicjacja obiektu, n=stopien wielomianu
n = w;
int temp;
for(int i=0;i<=n;i++){
cout <<"Podaj wartosc wspolczynnika nr: "<< i << endl;
cin >> temp;
wsp.push_back(temp);
}
}
Wielomian operator +(const Wielomian& A, const Wielomian& B){
int n;
if(A.n > B.n){
n = A.n;
}else{
n = B.n;
}
Wielomian C;
C.n = n;
int temp;
for(int i=0;i<=n;i++){
if(A.n>=i && B.n>=i){
temp = A.wsp[i] + B.wsp[i];
}
if(A.n>=i && B.n<i){
temp = A.wsp[i];
}
if(B.n>=i && A.n<i){
temp = B.wsp[i];
}
C.wsp.push_back(temp);
}
}
int main(int argc, char *argv[]) {
int n;
cout <<"Podaj stopien wielomianu A: "<< endl;
cin >> n;
Wielomian A(n);
cout <<"Podaj stopien wielomianu B: "<< endl;
cin >> n;
Wielomian B(n);
cout <<"Wielomian A: ";
A.wyswietl();
cout << endl << "Wielomian B: ";
B.wyswietl();
Wielomian C;
C = A + B;
cout << endl << "Wielomian C: ";
C.wyswietl();
return 0;
}