Wednesday, March 27, 2013

Huge integer multiplication

#include<iostream>
#include<conio.h>
#include <cstdlib>
#include<string>
using namespace std;
void main()
{
int *a,*b,**c,n1,n2,cr=0,z,i=0,j=0,l,s=0,k,m,n=0;
cout<<"Enter large digit\n";
string name,name1;
cin>>name;

n1=name.length();
a=new int[n1];

for(i=0;i<n1;i++)
    {
        a[i]=((int)name[i]-48) ;
    }

cout<<"Enter large digit\n";
cin>>name1;
n2=name1.length();
b=new int [n2];
for(i=0;i<n2;i++)
    {
        b[i]=((int)name1[i]-48);
    }
m=k=l=n1+n2;
if(n1>n2)
{
c=new int *[n1];
for(i=0;i<n1;i++)
c[i]=new int[k];
for(i=0;i<n1;i++)
{
for(j=0;j<k;j++)
c[i][j]=0;
}
}
else
{
    c=new int *[n2];
for(i=0;i<n2;i++)
c[i]=new int[k];
for(i=0;i<n2;i++)
{
for(j=0;j<k;j++)
c[i][j]=0;
}
}
for(j=n2-1;j>=0;j--)
{
k=--l;
for(i=n1-1;i>=0;i--)
{
if(i!=0)
{
z=(a[i]*b[j])+cr;
c[n][k]=z%10;
cr=z/10;
}
else
{
z=(a[i]*b[j])+cr;
c[n][k]=z%10;
cr=z/10;
c[n][k-1]=cr;
cr=0;
}
k--;
}
n++;
}

k=0;
cout<<"multiplication of number is\n";
cr=0;
int *d;
k=m;
d=new int[k];
for(i=0;i<m;i++)
d[i]=0;
cr=0;
for(j=m-1;j>=0;j--)
{
z=0;
for(i=n1-1;i>=0;i--)
{
z=z+c[i][j];
}
if(j!=m-1)
{
   z=z+cr;
d[k-1]=z%10;
cr=z/10;
}
else
{
z=z+cr;
d[k-1]=z%10;
cr=z/10;
d[k-2]=cr/10;
cr=0;
}
k--;
}
for(i=0;i<m;i++)
cout<<d[i];
cout<<endl;
getch();
}

No comments:

Post a Comment