شما باید اعداد رو داخل رشته نگهداری کنید . با رشته ها میتونید هرتعداد رقمی که خواستید رو داشته باشید .
و باید بتونید با رشته ها به صورت عدد رفتار کنید تا عمل های ریاضی رو روشون انجام بدید .
و یک Method جدید برای کلاس ostream و istream ایجاد کنید تا cout و cin بتونن با کلاس شما کار کنن . که نمونش اینجا هست :
http://www.7khatcode.com/1804/%D9%86%D8%AD%D9%88%D9%87-%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DB%8C%DA%A9-%DA%A9%D9%84%D8%A7%D8%B3-%D8%A8%D9%88%D8%B3%DB%8C%D9%84%D9%87-cout
و برای کلاس BigNumber باید operator ها رو سربارگزاری کنید .
و برای تبدیل کردن متغییر هایی مثل int به رشته و بر عکس هم میتونید از این پردازه ها استفاده کنید . ()itoa و ()atoi .
این یه برنامس که دو تا عدد رشته ای رو با هم جمع میکرد ( البته فکر میکنم . یادم نیست)
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char *firstNumber,*secondNumber,*result,buffer[512],tmp = 0,ext = 0;
unsigned int i,firstNumberLength,secondNumberLength,maxLength,m inLength;
cout<<"Enter the first number : ";
cin>>buffer;
firstNumberLength = strlen(buffer);
firstNumber = new char[firstNumberLength];
strcpy(firstNumber,buffer);
for(i = 0;i < firstNumberLength;i++)
{
buffer[0] = firstNumber[i];
buffer[1] = 0;
firstNumber[i] = atoi(buffer);
}
cout<<"Enter the second number : ";
cin>>buffer;
secondNumberLength = strlen(buffer);
secondNumber = new char[secondNumberLength];
strcpy(secondNumber,buffer);
for(i = 0;i < secondNumberLength;i++)
{
buffer[0] = secondNumber[i];
buffer[1] = 0;
secondNumber[i] = atoi(buffer);
}
if(firstNumberLength > secondNumberLength)
{
maxLength = firstNumberLength;
minLength = secondNumberLength;
}
else
{
maxLength = secondNumberLength;
minLength = firstNumberLength;
}
result = new char[maxLength+1];
for(i = 0;i < (maxLength+1);i++)
{
if(i < firstNumberLength)
tmp = firstNumber[(firstNumberLength - 1) - i];
else
tmp = 0;
if(i < secondNumberLength)
tmp += secondNumber[(secondNumberLength - 1) - i];
else
tmp += 0;
tmp += ext;
ext = tmp/10;
tmp = tmp%10;
result[(maxLength) - i] = tmp;
}
for(i = 0;i < maxLength+1;i++)
{
itoa((int)result[i],buffer,10);
result[i] = buffer[0];
}
result[i] = 0;// null-terminated string
cout<<result<<endl;
}