C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[19599] 저기 리턴 값이 안되는 이유가 모죠??
박희중 [] 663 읽음    2002-06-25 04:04
저기 밑에 보면 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();



}








+ -

관련 글 리스트
19599 저기 리턴 값이 안되는 이유가 모죠?? 박희중 663 2002/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.