|
저기 밑에 보면 Plus가 있는데..
리턴이 안되여..지역 변수라서 그런가요??
잘 모르겟네여..
좀 가르쳐 주세요..
틀린 부분 좀 고쳐 주세여..
에러는 없는데..
부탁 드립니다..
#include<iostream.h>
#include<string.h>
class Number{
private :
int length;
char *num;
public :
Number();
Number(char *);
Number(int);
~Number();
Number(const Number &);
Number &operator=( Number &temp);
Number operator+( Number &temp);
Number &operator=(long);
void print();
// Number operator=(long);
};
Number::Number()
{
num=NULL;
length=0;
}
Number::Number(int a)
{
length=a;
num=new char[length];
memset(num,'\0',length);
}
Number::Number(char *c)
{
length=strlen(c);
num=new char[length+1];
for(int i=0;i>length;++i)
num[i]='\0';
strcpy(num,c);
int Afrag=0;
for(int q=0;q<length;q++)
{
if (num[q]<'0' || num[q]>'9')
Afrag++;
}
if(Afrag !=0)
cout<<"정수가 아닌것이"<<Afrag<<"개 있습니다"<<endl;
}
Number::~Number()
{
delete []num;
length=0;
}
Number::Number(const Number &temp)
{
length=temp.length;
num=new char[length];
strcpy(num,temp.num);
}
Number Number:: operator+( Number &temp)
{
Number Plus;
length=strlen(num);
if(length>=temp.length)
{ Plus.length=length+1;
Plus.num=new char[Plus.length];
for(int i=0;i<Plus.length;i++)
Plus.num[i]='\0';
int Afrag=0;
for(int n=length;n>0;n--)
{
if ((n-(length-temp.length+1))<0)
Afrag++;
if (Afrag==0)
{
int a=0;
a= num[n-1] + temp.num[n-length+temp.length-1] - 48;
Plus.num[n+1] = a;
}
else
Plus.num[n]=num[n-1];
}
}
else
{
for(int g=0;g<temp.length;g++)
Plus.num[g]='\0';
Plus.length=temp.length+1;
Plus.num=new char[Plus.length];
int Bfrag=0;
for(int s=temp.length;s>0;s--)
{
if ((s-(temp.length-length+1))<0)
Bfrag++;
if(Bfrag==0)
{
int b= num [s-(temp.length-length+1)] + temp.num[s-1] - 48;
Plus.num[s+1] = b;
}
else
Plus.num[s]=temp.num[s-1];
}
}
for(int e=Plus.length;e>1;e--)
{
if(Plus.num[e]>'9')
{
Plus.num[e] -='9';
Plus.num[e] +='/';
Plus.num[e-1] +=1;
}
}
if(Plus.num[1]>'9')
{
Plus.num[0]='1';
Plus.num[1]-='9';
Plus.num[1]+='/';
}
return Plus;
}
Number & Number:: operator=( Number &temp)
{
delete []num;
length=temp.length;
num=new char[length];
for(int i=0;i>length;i++)
num[i]='\0';
strcpy(num,temp.num);
return *this;
}
void Number::print()
{
cout<<num<<endl;
cout<<length;
}
void main()
{
Number a("123499999");
Number b("2567");
Number c;
Number d(a);
d.print();
c=a+b;
c.print();
}
|