Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- Challenging C++ program VNSGU(MCA)
- Create a class HugeInteger that uses a 40-element array of digits to store integers as large as 40-digits each.Provide member methods inputHugeInteger, outputHugeInteger, addHugeIntegers and substractHugeIntegers. For comparing HugeInteger objects, provide methods isEqualTo, isNotEqualTo,isGreaterThan, isLessThan, IsGreaterThanOrEqualTo and isLessThanOrEqualTo--each of these is a
- “predicate” method that simply returns true if the relationship holds between the two huge integers and returns
- false if the relationship does not hold. Also provide a predicate method isZero.
- */
- #include<iostream>
- using namespace std;
- class HugeInteger
- {
- string num;
- int no[40];
- int l;
- public:
- void inputHugeInteger()
- {
- cout<<"\n Enter no=";
- cin>>num;
- if(num.length()>40)
- {
- cout<<"\n Number is not more than 40 digits";
- }
- else
- {
- convert_str_to_num(num);//this method convert str to num
- }
- }
- void convert_str_to_num(string s)
- {
- l=s.length();
- for(int k=0;k<l;k++)
- {
- no[k]=s[k]-'0';//convert char to int
- }
- }
- void outputHugeInteger()
- {
- cout<<"\n";
- for(int k=0;k<l;k++)
- {
- cout<<no[k];
- }
- }
- bool is_zero()
- {
- int flag=1;
- for(int k=0;k<l;k++)
- {
- if(no[k]!=0)
- {
- flag=0;
- break;
- }
- }
- if(flag==1)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- bool isEqualTo(HugeInteger temp)
- {
- int flag=1;
- if(l==temp.l)
- {
- for(int k=0;k<l;k++)
- {
- if(no[k]!=temp.no[k])
- {
- flag=0;
- break;
- }
- }
- }
- else
- {
- flag=0;
- }
- if(flag==1)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- bool isNotEqualTo(HugeInteger temp)
- {
- isEqualTo(temp)?cout<<"False":cout<<"True";
- }
- bool isgreaterthan(HugeInteger temp)
- {
- int flag=0;
- int d;
- if(l!=temp.l)
- {
- d=l-temp.l;
- if(d < 0)
- {
- flag=1;
- }
- }
- else
- {
- for(int k=0;k<l;k++)
- {
- if(no[k] < temp.no[k])
- {
- flag=1;
- break;
- }
- }
- }
- if(flag==1)
- {
- return false;
- }
- else
- {
- if(isEqualTo(temp)==0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- bool islessthan(HugeInteger temp)
- {
- int flag=0;
- int d;
- if(l!=temp.l)
- {
- d=l-temp.l;
- if(d < 0)
- {
- flag=1;
- }
- }
- else
- {
- for(int k=0;k<l;k++)
- {
- if(no[k] < temp.no[k])
- {
- flag=1;
- break;
- }
- }
- }
- if(flag==1)
- {
- return true;
- }
- else
- {
- if(isEqualTo(temp)==0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- bool isgreaterthanequalto(HugeInteger temp)
- {
- if(isEqualTo(temp)==1)
- {
- return true;
- }
- else
- {
- return true;
- }
- }
- bool islessthanequalto(HugeInteger temp)
- {
- if(isEqualTo(temp)==0)
- {
- return true;
- }
- else
- {
- return true;
- }
- }
- void addHugeIntegers(HugeInteger temp)
- {
- int sum[40];
- int s,flag=0;
- int t=0;
- int size1=num.length();
- int size2=temp.num.length();
- if(size1-size2==0)
- {
- for(int k=size2-1;k>=0;k--)
- {
- s=no[k]+temp.no[k];
- if(k==0 && s>=10)
- {
- flag=1;
- }
- if(s>=10)
- {
- sum[k]=s%10;
- no[k-1]=no[k-1]+s/10;
- }
- else
- {
- sum[k]=no[k]+temp.no[k];
- }
- }
- if(flag==1)
- {
- cout<<1;
- }
- for(int i=0;i<size1;i++)
- {
- cout<<sum[i];
- }
- }
- }
- };
- int main()
- {
- HugeInteger h1,h2;
- h1.inputHugeInteger();
- h2.inputHugeInteger();
- h1.outputHugeInteger();
- h2.outputHugeInteger();
- cout<<"\n No1 is zero=";
- h1.is_zero()?cout<<"true":cout<<"false";
- cout<<"\n No2 is zero=";
- h2.is_zero()?cout<<"true":cout<<"false";
- cout<<"\n No1 is equal to No2=";
- h1.isEqualTo(h2)?cout<<"true":cout<<"false";
- cout<<"\n No1 is not equal to No2=";
- h1.isNotEqualTo(h2);
- cout<<"\n No1 is greater than No2=";
- h1.isgreaterthan(h2)?cout<<"true":cout<<"false";
- cout<<"\n No1 is greater than equal to No2=";
- h1.isgreaterthanequalto(h2)?cout<<"true":cout<<"false";
- cout<<"\n No1 is less than No2=";
- h1.islessthan(h2)?cout<<"true":cout<<"false";
- cout<<"\n No1 is less than equal to No2=";
- h1.islessthanequalto(h2)?cout<<"true":cout<<"false";
- cout<<"\n Addition of 2 number is ";
- h1.addHugeIntegers(h2);
- }
Advertisement
Add Comment
Please, Sign In to add comment