C++ complete Huge integer Calculator with Operator loading using Classes
In this you can perform any arithmetic or logical operation on any huge integer like 11122355778292992278289389227191198
here is the complete code with
hugeintegr.h
#ifndef Huge_Integers_H
#define Huge_Integers_H
class HugeInteger{
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
private:
//facebook.com/invogorating.arslaan
int *HugeInt;
int size;
public:
//facebook.com/invogorating.arslaan
HugeInteger();
HugeInteger(char *);
friend HugeInteger operator+(int integer, HugeInteger h);
friend HugeInteger operator*(int integer, HugeInteger h);
void input();
void output()const;
HugeInteger operator+(HugeInteger );
HugeInteger operator+(int);
HugeInteger operator-(HugeInteger );
HugeInteger operator-(int);
HugeInteger operator*(HugeInteger );
HugeInteger operator*(int );
HugeInteger operator/(HugeInteger );
bool operator==(HugeInteger );
bool operator!=(HugeInteger );
bool operator<(HugeInteger );
bool operator<=(HugeInteger );
bool operator>(HugeInteger );
bool operator>=(HugeInteger );
};
#endif;
hugeinteger.cpp
#include "Huge_Integers.h"
#include<iostream>
#include<string>
using namespace std;
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
HugeInteger operator+(int integer, HugeInteger h)
{
int temp = 0, temp1 = 0;
HugeInteger res;
res.size = 40;
res.HugeInt = new int[res.size];
for (int j = 0; j<res.size; j++)
{
res.HugeInt[j] = 0;
}
for (int i = h.size - 1, j = res.size - 1; i >= 0; i--, j--)
{
if (j<0)
{
break;
}
if (i == h.size - 1)
temp = h.HugeInt[i] + integer + temp1;
else
temp = h.HugeInt[i] + temp1;
temp1 = 0;
temp1 = temp / 10;
temp = temp % 10;
res.HugeInt[j] = temp;
temp = 0;
if (i == 0 && temp1>0)
{
res.HugeInt[j - 1] = temp1;
}
}
//facebook.com/invogorating.arslaan
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
HugeInteger operator*(int integer, HugeInteger h)
{
HugeInteger res;
res.size = 40;
res.HugeInt = new int[res.size];
for (int i = 0; i<res.size; i++)
res.HugeInt[i] = 0;
int temp = 0, temp1 = 0, rv = 0, rv1 = 0;
for (int j = h.size - 1, k = res.size - 1; j >= 0; j--, k--)
{
temp = h.HugeInt[j] * integer;
res.HugeInt[k] = (temp % 10) + res.HugeInt[k];
temp1 = 0;
rv1 = 0;
rv1 = res.HugeInt[k] / 10;
temp1 = temp / 10;
res.HugeInt[k - 1] = temp1 + rv1 + res.HugeInt[k - 1];
temp = 0;
}
return res;
}
HugeInteger::HugeInteger()
{
HugeInt=nullptr;
}
HugeInteger::HugeInteger(char *hnt)
{
int size=strlen(hnt);
HugeInt=new int [size];
for(int i=0; i<size; i++)
{
HugeInt[i]=hnt[i];
}
}
void HugeInteger::input()
{
cout<<"enter integer"<<endl;
string temp;
cin>>temp;
size=temp.size();
HugeInt=new int [size];
int temp1;
for(int i=0,z=0; i<size; i++)
{
temp1=temp[i]-'0';
for(int j=0; j<10; j++)
{
if(temp1==j)
{
HugeInt[z]=j;
z++;
}
}
}
}
void HugeInteger::output()const
{
cout<<"huge integer is ";
for(int i=0; i<size; i++)
{
cout<<HugeInt[i];
}
cout<<endl;
}
HugeInteger HugeInteger::operator+(HugeInteger h)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int j=0; j<res.size; j++)
{
res.HugeInt[j]=0;
}
int temp=0,temp1=0;
if(size>=h.size)
{
for(int i=size-1,j=res.size-1,k=h.size-1; i>=0; i--,j--,k--)
{
if(j<0)
{
break;
}
if(k>=0)
{
temp=HugeInt[i]+h.HugeInt[k]+temp1;
}
else
temp=HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
}
else
{
for(int i=h.size-1,j=res.size-1,k=size-1; i>=0; i--,j--,k--)
{
if(j<0)
break;
if(k>=0)
temp=HugeInt[k]+h.HugeInt[i]+temp1;
else
temp=h.HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
int temp=0,temp1=0;
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int j=0; j<res.size; j++)
{
res.HugeInt[j]=0;
}
for(int i=size-1,j=res.size-1; i>=0; i--,j--)
{
if(j<0)
{
break;
}
if(i==size-1)
temp=HugeInt[i]+integer+temp1;
else
temp=HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
HugeInteger HugeInteger::operator-(HugeInteger h)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
bool flag=false;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]>h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=true;
}
if(HugeInt[i]<h.HugeInt[i])
{
flag=false;
break;
}
}
}
if(size>h.size||flag==true)
{
for(int i=size-1,j=h.size-1,k=res.size-1; i>=0; i--,j--,k--)
{
if(j>=0)
{
if(HugeInt[i]>=h.HugeInt[j])
res.HugeInt[k]=HugeInt[i]-h.HugeInt[j];
else
{
HugeInt[i]=HugeInt[i]+10;
res.HugeInt[k]=HugeInt[i]-h.HugeInt[j];
int z=i-1;
while(HugeInt[z]==0)
z--;
HugeInt[z]=HugeInt[z]-1;
}
}
else
{
res.HugeInt[k]=HugeInt[i];
}
}
}
if(flag==false)
{
cout<<"minuned is small than subtrahend"<<endl;
}
return res;
}
HugeInteger HugeInteger::operator-(int integer)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
for(int i=size-1,k=res.size-1; i>=0; i--,k--)
{
if(i==size-1)
{
if(HugeInt[i]>=integer)
res.HugeInt[k]=HugeInt[i]-integer;
else
{
HugeInt[i]=HugeInt[i]+10;
res.HugeInt[k]=HugeInt[i]-integer;
int z=i-1;
while(HugeInt[z]==0)
z--;
HugeInt[z]=HugeInt[z]-1;
}
}
else
res.HugeInt[k]=HugeInt[i];
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
if(size>=h.size)
{
for(int i=h.size-1,z=res.size-1; i>=0; i--,z--)
{
int temp=0,temp1=0,reserv=0,reserv1=0;
for(int j=size-1,k=z; j>=0; j--,k--)
{
temp=HugeInt[j]*h.HugeInt[i];
res.HugeInt[k]=(temp%10)+res.HugeInt[k];
temp1=0;
reserv1=0;
reserv1=res.HugeInt[k]/10;
temp1=temp/10;
res.HugeInt[k-1]=temp1+reserv1+res.HugeInt[k-1];
temp=0;
}
}
}
return res;
}
HugeInteger HugeInteger::operator*(int integer)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
int temp=0,temp1=0,reserv=0,reserv1=0;
for(int j=size-1,k=res.size-1; j>=0; j--,k--)
{
temp=HugeInt[j]*integer;
res.HugeInt[k]=(temp%10)+res.HugeInt[k];
temp1=0;
reserv1=0;
reserv1=res.HugeInt[k]/10;
temp1=temp/10;
res.HugeInt[k-1]=temp1+reserv1+res.HugeInt[k-1];
temp=0;
}
return res;
}
HugeInteger HugeInteger::operator/(HugeInteger h)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
int n=0,d=0,multiplier=1;
for(int i=size-1; i>=0; i--)
{
n=n+(HugeInt[i]*multiplier);
multiplier=multiplier*10;
}
multiplier=1;
for(int i=h.size-1; i>=0; i--)
{
d=d+(h.HugeInt[i]*multiplier);
multiplier=multiplier*10;
}
for(int i=1; i<=size; i++)
{
if(n%i==0&&d%i==0)
{
n=n/i;
d=d/i;
i=1;
}
}
if(d>n)
{
cout<<"divisor is greater than dividend";
}
int temp=0,temp1=0,rem=0;
temp=n/d;
rem=n-(temp*d);
for(int i=res.size-1; i>=0;i--)
{
res.HugeInt[i]=temp%10;
temp=temp-res.HugeInt[i];
if(temp==0)
break;
}
cout<<"remainder is "<<rem<<endl;
return res;
}
bool HugeInteger::operator==(HugeInteger h)
{
bool flag=false;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]==h.HugeInt[i])
flag=true;
else
flag=false;
}
}
else
return false;
return flag;
}
bool HugeInteger::operator!=(HugeInteger h)
{
return !((*this)==h);
}
bool HugeInteger::operator<(HugeInteger h)
{
bool flag=false;
if(size>h.size)
return false;
else
{
if(size<h.size)
return true;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]<h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]>h.HugeInt[i])
{
flag=false;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=false;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
bool flag=false;
if(size>h.size)
return false;
else
{
if(size<h.size)
return true;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]<h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]>h.HugeInt[i])
{
flag=false;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=true;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
bool flag=false;
if(h.size>size)
return false;
else
{
if(h.size<size)
return true;
if(h.size==size)
{
for(int i=0; i<size; i++)
{
if(h.HugeInt[i]<HugeInt[i])
{
flag=true;
break;
}
if(h.HugeInt[i]>HugeInt[i])
{
flag=false;
break;
}
if(h.HugeInt[i]==HugeInt[i])
{
flag=false;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
bool HugeInteger::operator>=(HugeInteger h)
{
bool flag=false;
if(h.size>size)
return false;
else
{
if(h.size<size)
return true;
if(h.size==size)
{
for(int i=0; i<size; i++)
{
if(h.HugeInt[i]<HugeInt[i])
{
flag=true;
break;
}
if(h.HugeInt[i]>HugeInt[i])
{
flag=false;
break;
}
if(h.HugeInt[i]==HugeInt[i])
{
flag=true;
}
}
}
}
return flag;
}
main driver.cpp
#include "Huge_Integers.h"
#include<iostream>
using namespace std;
void takeAction()
{
cout << endl << endl << endl << "1 Input first HugeInteger from the user" << endl;
cout << "2. Input second HugeInteger from the user " << endl;
cout << "3. Output first HugeInteger to the screen" << endl;
cout << "4. Output second HugeInteger to the screen " << endl;
cout << "5. Add two HugeIntegers " << endl;
cout << "6. Add a HugeInteger and an integer " << endl;
cout << "7. Add integer and huge integer " << endl;
cout << "8. Subtract one HugeInteger from the other " << endl;
cout << "9. Subtract one HugeInteger from an integer " << endl;
cout << "10 Multiply 2 huge integers " << endl;
cout << "11 Multiply a Huge Integers with integer " << endl;
cout << "12 Multiply an integer with huge integr " << endl;
cout << "13 Divide two huge integers " << endl;
cout << "14 Compare two HugeIntegers for equality operator " << endl;
cout << "15 Compare two HugeIntegers for non equality operator " << endl;
cout << "16 Compare two HugeIntegers for < operator " << endl;
cout << "17 compare <= operator for huge integers " << endl;
cout << "18 Compare two HugeIntegers for greater than operator " << endl;
cout << "19 Compare two HugeIntegers for greater than or equal to " << endl;
cout << "20 Assign value of an HugeInteger to each other " << endl;
cout << " -1 to quit from menu " << endl;
}
int main()
{
HugeInteger h1,h2,h3;
int menu = 0;
takeAction();
do{
cout << "please proceed in the program" << endl;
cin >> menu;
if (menu == 1)
{
h1.input();
}
if (menu == 2)
{
h2.input();
}
if (menu == 3)
{
h1.output();
}
if (menu == 4)
{
h2.output();
}
if (menu == 5)
{
h3 = h1 + h2;
h3.output();
}
if (menu == 6)
{
h3 = h1 + 4;
h3.output();
}
if (menu == 7)
{
h3 = 4 + h1;
h3.output();
}
if (menu == 8)
{
h3 = h1 - h2;
h3.output();
}
if (menu == 9)
{
h3 = h1 - 4;
h3.output();
}
if (menu == 10)
{
h3 = h1*h2;
h3.output();
}
if (menu == 11)
{
h3 = h1 * 4;
h3.output();
}
if (menu == 12)
{
h3 = 3 * h1;
h3.output();
}
if (menu == 13)
{
h3 = h1 / h2;
h3.output();
}
if (menu == 14)
{
if (h1 == h2)
cout << "Both huge numbers are equal " << endl;
}
if (menu == 15)
{
if (h1 != h2)
cout << "both huge numbers are not equal " << endl;
}
if (menu == 16)
{
if (h1<h2)
cout << "1st huge integer is less than 2nd huge integer " << endl;
}
if (menu == 17)
{
if (h1 <= h2)
cout << "1st hugeinteger is less than or equal to 2nd hugeinteger " << endl;
}
if (menu == 18)
{
if (h1>h2)
{
cout << "1st hugeinteger is greater than 2nd hugeinteger " << endl;
}
}
if (menu == 19)
{
if (h1 >= h2)
{
cout << "1st hugeinteger is greater than or equal to 2nd hugeinteger " << endl;
}
}
if (menu == 20)
{
h3 = h2;
h3.output();
}
} while (menu != -1);
return 0;
}
In this you can perform any arithmetic or logical operation on any huge integer like 11122355778292992278289389227191198
here is the complete code with
hugeintegr.h
#ifndef Huge_Integers_H
#define Huge_Integers_H
class HugeInteger{
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
private:
//facebook.com/invogorating.arslaan
int *HugeInt;
int size;
public:
//facebook.com/invogorating.arslaan
HugeInteger();
HugeInteger(char *);
friend HugeInteger operator+(int integer, HugeInteger h);
friend HugeInteger operator*(int integer, HugeInteger h);
void input();
void output()const;
HugeInteger operator+(HugeInteger );
HugeInteger operator+(int);
HugeInteger operator-(HugeInteger );
HugeInteger operator-(int);
HugeInteger operator*(HugeInteger );
HugeInteger operator*(int );
HugeInteger operator/(HugeInteger );
bool operator==(HugeInteger );
bool operator!=(HugeInteger );
bool operator<(HugeInteger );
bool operator<=(HugeInteger );
bool operator>(HugeInteger );
bool operator>=(HugeInteger );
};
#endif;
hugeinteger.cpp
#include "Huge_Integers.h"
#include<iostream>
#include<string>
using namespace std;
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
int temp = 0, temp1 = 0;
HugeInteger res;
res.size = 40;
res.HugeInt = new int[res.size];
for (int j = 0; j<res.size; j++)
{
res.HugeInt[j] = 0;
}
for (int i = h.size - 1, j = res.size - 1; i >= 0; i--, j--)
{
if (j<0)
{
break;
}
if (i == h.size - 1)
temp = h.HugeInt[i] + integer + temp1;
else
temp = h.HugeInt[i] + temp1;
temp1 = 0;
temp1 = temp / 10;
temp = temp % 10;
res.HugeInt[j] = temp;
temp = 0;
if (i == 0 && temp1>0)
{
res.HugeInt[j - 1] = temp1;
}
}
//facebook.com/invogorating.arslaan
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
HugeInteger res;
res.size = 40;
res.HugeInt = new int[res.size];
for (int i = 0; i<res.size; i++)
res.HugeInt[i] = 0;
int temp = 0, temp1 = 0, rv = 0, rv1 = 0;
for (int j = h.size - 1, k = res.size - 1; j >= 0; j--, k--)
{
temp = h.HugeInt[j] * integer;
res.HugeInt[k] = (temp % 10) + res.HugeInt[k];
temp1 = 0;
rv1 = 0;
rv1 = res.HugeInt[k] / 10;
temp1 = temp / 10;
res.HugeInt[k - 1] = temp1 + rv1 + res.HugeInt[k - 1];
temp = 0;
}
return res;
}
HugeInteger::HugeInteger()
{
HugeInt=nullptr;
}
HugeInteger::HugeInteger(char *hnt)
{
int size=strlen(hnt);
HugeInt=new int [size];
for(int i=0; i<size; i++)
{
HugeInt[i]=hnt[i];
}
}
void HugeInteger::input()
{
cout<<"enter integer"<<endl;
string temp;
cin>>temp;
size=temp.size();
HugeInt=new int [size];
int temp1;
for(int i=0,z=0; i<size; i++)
{
temp1=temp[i]-'0';
for(int j=0; j<10; j++)
{
if(temp1==j)
{
HugeInt[z]=j;
z++;
}
}
}
}
void HugeInteger::output()const
{
cout<<"huge integer is ";
for(int i=0; i<size; i++)
{
cout<<HugeInt[i];
}
cout<<endl;
}
HugeInteger HugeInteger::operator+(HugeInteger h)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int j=0; j<res.size; j++)
{
res.HugeInt[j]=0;
}
int temp=0,temp1=0;
if(size>=h.size)
{
for(int i=size-1,j=res.size-1,k=h.size-1; i>=0; i--,j--,k--)
{
if(j<0)
{
break;
}
if(k>=0)
{
temp=HugeInt[i]+h.HugeInt[k]+temp1;
}
else
temp=HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
}
else
{
for(int i=h.size-1,j=res.size-1,k=size-1; i>=0; i--,j--,k--)
{
if(j<0)
break;
if(k>=0)
temp=HugeInt[k]+h.HugeInt[i]+temp1;
else
temp=h.HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
HugeInteger HugeInteger::operator+(int integer){
int temp=0,temp1=0;
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int j=0; j<res.size; j++)
{
res.HugeInt[j]=0;
}
for(int i=size-1,j=res.size-1; i>=0; i--,j--)
{
if(j<0)
{
break;
}
if(i==size-1)
temp=HugeInt[i]+integer+temp1;
else
temp=HugeInt[i]+temp1;
temp1=0;
temp1=temp/10;
temp=temp%10;
res.HugeInt[j]=temp;
temp=0;
if(i==0&&temp1>0)
{
res.HugeInt[j-1]=temp1;
}
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
bool flag=false;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]>h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=true;
}
if(HugeInt[i]<h.HugeInt[i])
{
flag=false;
break;
}
}
}
if(size>h.size||flag==true)
{
for(int i=size-1,j=h.size-1,k=res.size-1; i>=0; i--,j--,k--)
{
if(j>=0)
{
if(HugeInt[i]>=h.HugeInt[j])
res.HugeInt[k]=HugeInt[i]-h.HugeInt[j];
else
{
HugeInt[i]=HugeInt[i]+10;
res.HugeInt[k]=HugeInt[i]-h.HugeInt[j];
int z=i-1;
while(HugeInt[z]==0)
z--;
HugeInt[z]=HugeInt[z]-1;
}
}
else
{
res.HugeInt[k]=HugeInt[i];
}
}
}
if(flag==false)
{
cout<<"minuned is small than subtrahend"<<endl;
}
return res;
}
HugeInteger HugeInteger::operator-(int integer)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
for(int i=size-1,k=res.size-1; i>=0; i--,k--)
{
if(i==size-1)
{
if(HugeInt[i]>=integer)
res.HugeInt[k]=HugeInt[i]-integer;
else
{
HugeInt[i]=HugeInt[i]+10;
res.HugeInt[k]=HugeInt[i]-integer;
int z=i-1;
while(HugeInt[z]==0)
z--;
HugeInt[z]=HugeInt[z]-1;
}
}
else
res.HugeInt[k]=HugeInt[i];
}
return res;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
HugeInteger HugeInteger::operator*(HugeInteger h){
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
if(size>=h.size)
{
for(int i=h.size-1,z=res.size-1; i>=0; i--,z--)
{
int temp=0,temp1=0,reserv=0,reserv1=0;
for(int j=size-1,k=z; j>=0; j--,k--)
{
temp=HugeInt[j]*h.HugeInt[i];
res.HugeInt[k]=(temp%10)+res.HugeInt[k];
temp1=0;
reserv1=0;
reserv1=res.HugeInt[k]/10;
temp1=temp/10;
res.HugeInt[k-1]=temp1+reserv1+res.HugeInt[k-1];
temp=0;
}
}
}
return res;
}
HugeInteger HugeInteger::operator*(int integer)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
int temp=0,temp1=0,reserv=0,reserv1=0;
for(int j=size-1,k=res.size-1; j>=0; j--,k--)
{
temp=HugeInt[j]*integer;
res.HugeInt[k]=(temp%10)+res.HugeInt[k];
temp1=0;
reserv1=0;
reserv1=res.HugeInt[k]/10;
temp1=temp/10;
res.HugeInt[k-1]=temp1+reserv1+res.HugeInt[k-1];
temp=0;
}
return res;
}
HugeInteger HugeInteger::operator/(HugeInteger h)
{
HugeInteger res;
res.size=40;
res.HugeInt=new int [res.size];
for(int i=0; i<res.size; i++)
res.HugeInt[i]=0;
int n=0,d=0,multiplier=1;
for(int i=size-1; i>=0; i--)
{
n=n+(HugeInt[i]*multiplier);
multiplier=multiplier*10;
}
multiplier=1;
for(int i=h.size-1; i>=0; i--)
{
d=d+(h.HugeInt[i]*multiplier);
multiplier=multiplier*10;
}
for(int i=1; i<=size; i++)
{
if(n%i==0&&d%i==0)
{
n=n/i;
d=d/i;
i=1;
}
}
if(d>n)
{
cout<<"divisor is greater than dividend";
}
int temp=0,temp1=0,rem=0;
temp=n/d;
rem=n-(temp*d);
for(int i=res.size-1; i>=0;i--)
{
res.HugeInt[i]=temp%10;
temp=temp-res.HugeInt[i];
if(temp==0)
break;
}
cout<<"remainder is "<<rem<<endl;
return res;
}
bool HugeInteger::operator==(HugeInteger h)
{
bool flag=false;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]==h.HugeInt[i])
flag=true;
else
flag=false;
}
}
else
return false;
return flag;
}
bool HugeInteger::operator!=(HugeInteger h)
{
return !((*this)==h);
}
bool HugeInteger::operator<(HugeInteger h)
{
bool flag=false;
if(size>h.size)
return false;
else
{
if(size<h.size)
return true;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]<h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]>h.HugeInt[i])
{
flag=false;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=false;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
bool HugeInteger::operator<=(HugeInteger h){
bool flag=false;
if(size>h.size)
return false;
else
{
if(size<h.size)
return true;
if(size==h.size)
{
for(int i=0; i<size; i++)
{
if(HugeInt[i]<h.HugeInt[i])
{
flag=true;
break;
}
if(HugeInt[i]>h.HugeInt[i])
{
flag=false;
break;
}
if(HugeInt[i]==h.HugeInt[i])
{
flag=true;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
bool HugeInteger::operator>(HugeInteger h){
bool flag=false;
if(h.size>size)
return false;
else
{
if(h.size<size)
return true;
if(h.size==size)
{
for(int i=0; i<size; i++)
{
if(h.HugeInt[i]<HugeInt[i])
{
flag=true;
break;
}
if(h.HugeInt[i]>HugeInt[i])
{
flag=false;
break;
}
if(h.HugeInt[i]==HugeInt[i])
{
flag=false;
}
}
}
}
return flag;
}
// made by Arslaan Muhammad Ali
// For any query feel free to contact me
//facebook.com/invogorating.arslaan
{
bool flag=false;
if(h.size>size)
return false;
else
{
if(h.size<size)
return true;
if(h.size==size)
{
for(int i=0; i<size; i++)
{
if(h.HugeInt[i]<HugeInt[i])
{
flag=true;
break;
}
if(h.HugeInt[i]>HugeInt[i])
{
flag=false;
break;
}
if(h.HugeInt[i]==HugeInt[i])
{
flag=true;
}
}
}
}
return flag;
}
main driver.cpp
#include "Huge_Integers.h"
#include<iostream>
using namespace std;
void takeAction()
{
cout << endl << endl << endl << "1 Input first HugeInteger from the user" << endl;
cout << "2. Input second HugeInteger from the user " << endl;
cout << "3. Output first HugeInteger to the screen" << endl;
cout << "4. Output second HugeInteger to the screen " << endl;
cout << "5. Add two HugeIntegers " << endl;
cout << "6. Add a HugeInteger and an integer " << endl;
cout << "7. Add integer and huge integer " << endl;
cout << "8. Subtract one HugeInteger from the other " << endl;
cout << "9. Subtract one HugeInteger from an integer " << endl;
cout << "10 Multiply 2 huge integers " << endl;
cout << "11 Multiply a Huge Integers with integer " << endl;
cout << "12 Multiply an integer with huge integr " << endl;
cout << "13 Divide two huge integers " << endl;
cout << "14 Compare two HugeIntegers for equality operator " << endl;
cout << "15 Compare two HugeIntegers for non equality operator " << endl;
cout << "16 Compare two HugeIntegers for < operator " << endl;
cout << "17 compare <= operator for huge integers " << endl;
cout << "18 Compare two HugeIntegers for greater than operator " << endl;
cout << "19 Compare two HugeIntegers for greater than or equal to " << endl;
cout << "20 Assign value of an HugeInteger to each other " << endl;
cout << " -1 to quit from menu " << endl;
}
int main()
{
HugeInteger h1,h2,h3;
int menu = 0;
takeAction();
do{
cout << "please proceed in the program" << endl;
cin >> menu;
if (menu == 1)
{
h1.input();
}
if (menu == 2)
{
h2.input();
}
if (menu == 3)
{
h1.output();
}
if (menu == 4)
{
h2.output();
}
if (menu == 5)
{
h3 = h1 + h2;
h3.output();
}
if (menu == 6)
{
h3 = h1 + 4;
h3.output();
}
if (menu == 7)
{
h3 = 4 + h1;
h3.output();
}
if (menu == 8)
{
h3 = h1 - h2;
h3.output();
}
if (menu == 9)
{
h3 = h1 - 4;
h3.output();
}
if (menu == 10)
{
h3 = h1*h2;
h3.output();
}
if (menu == 11)
{
h3 = h1 * 4;
h3.output();
}
if (menu == 12)
{
h3 = 3 * h1;
h3.output();
}
if (menu == 13)
{
h3 = h1 / h2;
h3.output();
}
if (menu == 14)
{
if (h1 == h2)
cout << "Both huge numbers are equal " << endl;
}
if (menu == 15)
{
if (h1 != h2)
cout << "both huge numbers are not equal " << endl;
}
if (menu == 16)
{
if (h1<h2)
cout << "1st huge integer is less than 2nd huge integer " << endl;
}
if (menu == 17)
{
if (h1 <= h2)
cout << "1st hugeinteger is less than or equal to 2nd hugeinteger " << endl;
}
if (menu == 18)
{
if (h1>h2)
{
cout << "1st hugeinteger is greater than 2nd hugeinteger " << endl;
}
}
if (menu == 19)
{
if (h1 >= h2)
{
cout << "1st hugeinteger is greater than or equal to 2nd hugeinteger " << endl;
}
}
if (menu == 20)
{
h3 = h2;
h3.output();
}
} while (menu != -1);
return 0;
}
Comments
Post a Comment