BigNumber
این کد برای جمع کردن 2 عدد خیلی بزرگ (حداکثر 1000 رقمی) نوشته شده.
کاری که با ماشین حساب معمولی نمیشه انجام داد.


#include<iostream>
#include<string.h>
using namespace std;

void read_number(char num1[],char num2[]);
char* add_number(char num1[],char num2[],char num3[]);

#define SIZE 1000

int main(){
char *num1,*num2,*num3;
num1=new char[SIZE];
num2=new char[SIZE];
num3=new char[SIZE];
int n;//baraye tedad barhaye anjame amale jam.
cout<<"Chand bar mikhahid amale jam kardane 2 adad ra anjam dahid?";
cin>>n;
for(int i=0;i<n;i++){
read_number(num1,num2);
add_number(num1,num2,num3);
cout<<num3<<endl;
}
delete []num1;
delete []num2;
delete []num3;
return 0;
}
void read_number(char num1[],char num2[]){
cout<<"2 adad ra vared konid:";
cin>>num1>>num2;
}
char* add_number(char num1[],char num2[],char num3[]){
int carry=0;//baraye zakhire kardane raghame naghli.
int digit;//baraye zakhire kardane yek raghame az reshteye avval va dovvom va majmoo'eshan.
int len1,len2;//baraye zakhire kardane toole reshteha.
len1=strlen(num1);
len2=strlen(num2);
int max,min;//max baraye zakhire kardane toole reshteye bozorgtar va min baraye reshteye koochakter ast.
max=len1>len2?len1:len2;
min=len1<len2?len1:len2;
int i,j,k=0;//i o j shomarandeye halghe va k baraye ta'yine khaneye morede nazar az string hastand.
if(len1>=len2){
for(i=max-1,j=min-1;i>=0;i--){
if(j>=0){
digit=(int)(num1[i]-48+num2[j]-48+carry);
if(digit>9){
digit-=10;
carry=1;
}
else{//digit<=9
carry=0;
}
num3[k]=digit+48;
k++;
}
else{
digit=(int)(num1[i]-48+carry);
if(digit>9){
digit-=10;
carry=1;
}
else{//digit<=9
carry=0;
}
num3[k]=digit+48;
k++;
}
j--;
}
}
else{//len1<len2
for(i=max-1,j=min-1;i>=0;i--){
if(j>=0){
digit=(int)(num2[i]-48+num1[j]-48+carry);
if(digit>9){
digit-=10;
carry=1;
}
else{//digit<=9
carry=0;
}
num3[k]=digit+48;
k++;
}
else{
digit=(int)(num2[i]-48+carry);
if(digit>9){
digit-=10;
carry=1;
}
else{//digit<=9
carry=0;
}
num3[k]=digit+48;
k++;
}
j--;
}
}
if(carry==1){
num3[k]=1+48;//ya num3[k]=49;
k++;
num3[k]=NULL;
}
num3[k]=NULL;
char *komaki=new char[strlen(num3)];
strcpy(komaki,num3);
for(i=0,j=strlen(num3)-1;num3[i];i++){
num3[i]=komaki[j];
j--;
}
return num3;
}
char* mul_number(char num1[],char num2[],char num3[]){
int len1,len2;//baraye zakhire kardane toole 2 reshte.
int carry=0;//baraye zakhire kardane raghame naghliye hasel az zarbe yek ragham dar adad.
len1=strlen(num1);
len2=strlen(num2);
return num3;
}