You need to add, subtract and multiply two numbers and store number in character array only.
Logic
1) First way to create a “long long”number from String and add/multiply/subtract.
And convert this result in to character array.2) keep numbers in Character array only and try to add/sub/multiply index wise.
See code for Add+Multiply
You can create for Subtract.
Thanks to Dhaval for suggesting this approach and Article
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10000
char * addition(char a[],char b[]){
static char add[MAX];
char c[MAX];
int temp;
int la,lb;
int i,j,k=0,x=0,y;
long int car=0;
long sum = 0;
la=strlen(a)-1;
lb=strlen(b)-1;
//printf(“n la=%d lb=%d “,la,lb);
for(i=0;i<=la;i++){ a[i] = a[i] – 48; }
for(i=0;i<=lb;i++){ b[i] = b[i] – 48; }
if(la>lb){
y=0;
k=la;
}
else{
k=lb;
y=1;
}
//printf(“nAddition called “);
for(i=la,j=lb;i>=0,j>=0;i–,j–){
//printf(“Addition called “);
c[k–]=(car+a[i]+b[j])%10;
car=(car+a[i]+b[j])/10;
}//for
printf(“nWithout carry %s”,c);
if(y=0){
j=0;
for(i=0;i<la+1;i++){
add[j++]=c[i] + 48;
}
add[j]=”;
}
else{
j=0;
for(i=0;i<lb+1;i++){
add[j++]=c[i] + 48;
}
add[j]=”;
}
return add;
}
char * multiply(char a[],char b[]){
static char mul[MAX];
char c[MAX];
char temp[MAX];
int la,lb;
int i,j,k=0,x=0,y;
long int r=0;
long sum = 0;
la=strlen(a)-1;
lb=strlen(b)-1;
for(i=0;i<=la;i++){
a[i] = a[i] – 48;
}
for(i=0;i<=lb;i++){
b[i] = b[i] – 48;
}
for(i=lb;i>=0;i–){
r=0;
for(j=la;j>=0;j–){
temp[k++] = (b[i]*a[j] + r)%10;
r = (b[i]*a[j]+r)/10;
}
temp[k++] = r;
x++;
for(y = 0;y<x;y++){
temp[k++] = 0;
}
}
k=0;
r=0;
for(i=0;i<la+lb+2;i++){
sum =0;
y=0;
for(j=1;j<=lb+1;j++){
if(i <= la+j){
sum = sum + temp[y+i];
}
y += j + la + 1;
}
c[k++] = (sum+r) %10;
r = (sum+r)/10;
}
c[k] = r;
j=0;
for(i=k-1;i>=0;i–){
mul[j++]=c[i] + 48;
}
mul[j]=”;
return mul;
}
int main(){
char a[MAX]={‘9′,’5′,’5′,’5′,’5’ };
char b[MAX]={‘3′,’3′,’3′,’3′,’3′,’3′,’3′,’3′,’3′,’3’};
char *c;
int la,lb;
//int i = 0;
int i = 1;
//int i = 2;
printf(“Answer of two numbers : “);
switch(i){
case 0: c = multiply(a,b); break;
case 1: c = addition(a,b); break;
//case 2: c = sub(a,b); break;
default: break;
}
//c = multiply(a,b);
printf(“%s”,c);
return 0;
}
You can view code at http://ideone.com/Kd2Rv1