hi.
i have to do addition,multiplication,division and substraction of large numbers using c++.
Using pointers and struct .I m sending some code.plz if anyone can do this program help me.
here r some code
plz send me on fri_003@yahoo.co.in
as soon as possible.
#include<stdio.h>
struct node
{
long int data;
struct node* llink;
struct node* rlink;
node()
{
data=0;
llink = NULL;
rlink = NULL;
}
};
struct head
{
int noofdigit;
char sign;
struct node* left;
struct node* right;
head()
{
noofdigit = 0;
sign =0;
left = NULL;
right =NULL;
}
};
char Sign(struct head* headpointer)
{
return headpointer->sign;
}
struct node* FirstLeft(struct head* headpointer)
{
return headpointer ->left;
}
struct node* FirstRight(struct head* headpointer)
{
return headpointer ->right;
}
struct node* NextLeft(struct node* nodetosearch)
{
return nodetosearch ->rlink;
}
void InsertLeft(struct head* headnode,struct node* nodetoinsert)
{
if(FirstLeft(headnode) ==NULL || FirstRight(headnode) == NULL)
{
headnode ->left = nodetoinsert;
headnode ->right = nodetoinsert;
}
else
{
headnode ->left->llink = nodetoinsert;
nodetoinsert->rlink = FirstLeft(headnode);
headnode->left = nodetoinsert;
}
}
int over_flow(struct node* nodetochk)
{
long int ovrflwdgt = 0;
ovrflwdgt = nodetochk->data / 100000000;
if(ovrflwdgt !=0)
{
nodetochk->data = nodetochk->data - (ovrflwdgt* 100000000);
}
return ovrflwdgt;
}
void Add(struct head* oprnd1,struct head* oprnd2,struct head* result)
{
struct node* n1,*n2 , *rslt;
long int sum,ovrflwdgt = 0;
if(Sign(oprnd1) == Sign(oprnd2))
{
n1 = FirstRight(oprnd1);
n2 = FirstRight(oprnd2);
while(n1!=NULL && n2!=NULL)
{
sum = n1->data + n2->data + ovrflwdgt;
rslt = new struct node;
rslt->data = sum;
InsertLeft(result,rslt);
ovrflwdgt = over_flow(rslt);
n1 = NextLeft(n1);
n2 = NextLeft(n2);
}
while(n1 != NULL)
{
sum = n1->data + ovrflwdgt;
rslt = new struct node;
rslt->data = sum;
InsertLeft(result,rslt);
ovrflwdgt = over_flow(rslt);
n1 = NextLeft(n1);
n2 = NextLeft(n2);
}
while(n2 != NULL)
{
sum = n2->data + ovrflwdgt;
rslt = new struct node;
rslt ->data = sum;
InsertLeft(result,rslt);
ovrflwdgt = over_flow(rslt);
n2 = NextLeft(n2);
}
if(ovrflwdgt > 0)
{
rslt = new struct node;
rslt->data = ovrflwdgt;
InsertLeft(result,rslt);
}
}
}