[語法] run time error
我要寫一個polynomial的程式
要overloading + - * =
可是我寫完compile是對了
可是寫main測試之後
卻是run time error
我不知道問題出在哪邊.....
可以幫我看一下嗎
header
#include <iostream>
using namespace std;
class polynomial
{
friend istream & operator>>(istream & cin,polynomial &);
public:
polynomial(int=10);
polynomial operator+(polynomial & right);
polynomial operator-(polynomial & right);
polynomial operator*(polynomial & right);
polynomial operator=(polynomial & right);
bool operator==(polynomial & right);
bool operator!=(polynomial & right)
{
return !(*this==right);
}
void getsize();
~polynomial();
private:
int *aptr;
int size;
};
然後是
cppp
#include<iostream>
#include "11.17.h"
using namespace std;
polynomial::polynomial(int a)
{
size=a;
aptr=new int[a];
for(int i=0;i<size;i++)
aptr[i]=0;
}
istream & operator>>(istream & cin,polynomial &right)
{
for(int i=0;i<right.size;i++)
cin>>right.aptr[i];
return cin;
}
polynomial polynomial::operator +(polynomial &right)
{
int b,c;
if(size<right.size){b=size;c=right.size;}
else{c=size;b=right.size;};
polynomial a(c);
if(size<right.size)
{for(int i=0;i<size;i++)
a.aptr[i]=(*this).aptr[i]+right.aptr[i];
for(int j=size;j<right.size;j++)
a.aptr[j]=right.aptr[j];}
else
{for(int i=0;i<right.size;i++)
a.aptr[i]=(*this).aptr[i]+right.aptr[i];
for(int j=right.size;j<size;j++)
a.aptr[j]=aptr[j];}
return a;
}
polynomial polynomial::operator -(polynomial &right)
{
polynomial a;
if(size<right.size)
for(int i=0;i<size;i++)
a.aptr[i]=(*this).aptr[i]-right.aptr[i];
else
for(int i=0;i<right.size;i++)
a.aptr[i]=(*this).aptr[i]-right.aptr[i];
return a;
}
polynomial polynomial::operator *(polynomial &right)
{
polynomial a(size*right.size);
for(int i=0;i<size;i++)
for(int j=0;j<right.size;j++)
a.aptr[i]=(*this).aptr[i]*right.aptr[j]+a.aptr[i];
return a;
}
bool polynomial::operator ==(polynomial &right)
{
if (size!=right.size)
return false;
for(int i=0;i<size;i++)
if(aptr[i]!=right.aptr[i])
return false;
return true;
}
polynomial polynomial::operator =(polynomial &right)
{
if(&right !=this)
{
if(size !=right.size)
{
delete [] aptr;
size=right.size;
aptr=new int[size];
}
for(int i=0;i<size;i++)
aptr[i]=right.aptr[i];
}
return *this;
}
polynomial::~polynomial()
{
delete [] aptr;
}
void polynomial::getsize()
{
cout<<size;
}
謝謝.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.45.42
→
01/07 03:37, , 1F
01/07 03:37, 1F
→
01/07 03:38, , 2F
01/07 03:38, 2F
推
01/07 04:43, , 3F
01/07 04:43, 3F
推
01/07 04:55, , 4F
01/07 04:55, 4F
→
01/07 04:56, , 5F
01/07 04:56, 5F
推
01/07 10:12, , 6F
01/07 10:12, 6F
→
01/07 10:14, , 7F
01/07 10:14, 7F
→
01/07 10:14, , 8F
01/07 10:14, 8F
→
01/07 10:14, , 9F
01/07 10:14, 9F