Assignment 1
Assignment 1
PROBLEM 1:
CODE:
#include<bits/stdc++.h>
if (a == 0)
return b;
class Rational
{ private:
int numerator;
int denominator;
public:
Rational()
numerator=0;
denominator=0;
Rational(int n,int d)
numerator=n;
denominator=d;
numerator=n;denominator=d;
return *this; // dereferencing the this pointer for pointing the current object
{ Rational r;
r.numerator= r1.numerator*(x/r1.denominator)+(r2.numerator*(x/r2.denominator));
r.denominator=x;
return r;
Rational simplify()
int common_divisor=gcd(numerator,denominator);
numerator/=common_divisor;
denominator/=common_divisor;
return *this;
Rational r;
r.numerator= r1.numerator*(x/r1.denominator)-(r2.numerator*(x/r2.denominator)); //
numerator
r.denominator=x;
return r;
Rational r;
r.numerator=r1.numerator*r2.numerator;
r.denominator=r1.denominator*r2.denominator;
return r;
}
Rational r;
r.numerator=r1.numerator*r2.denominator;
r.denominator=r1.denominator*r2.numerator;
return r;
void display()
cout<<numerator<<"/"<<denominator<<endl;
};
int main()
Rational r1(288,14),r2(35,15);
cout<<"Rational 1 : ";
r1.simplify();
r1.display();
cout<<"Rational 2 : ";
r2.simplify();
r2.display();
Rational sum=r1.add(r1,r2);
cout<<"ADDITION: ";
sum.simplify();
sum.display();
Rational difference=r1.subtract(r1,r2);
cout<<"SUBTRACTION: ";
difference.simplify();
difference.display();
Rational multi=r1.multiply(r1,r2);
cout<<"MULTIPLICATION: ";
multi.simplify();
multi.display();
Rational div=r1.divide(r1,r2);
cout<<"DIVISION: ";
div.simplify();
div.display();
return 0;
OUTPUT:
PROBLEM 2:
CODE:
#include<bits/stdc++.h>
int maxSum=0;
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
int thisSum=0;
for(int k=i;k<=j;k++)
thisSum+=arr[k];
if(thisSum>maxSum)
maxSum=thisSum;
return maxSum;
int maxSum=0;
for(int i=0;i<n;i++)
int thisSum=0;
for(int j=i;j<n;j++)
thisSum+=arr[j];
if(thisSum>maxSum)
maxSum=thisSum;
return maxSum;
{
return a>b?a>c?a:c:b>c?b:c;
int maxSum=0,thisSum=0;
for(int j=0;j<n;j++)
thisSum+=arr[j];
if(thisSum>maxSum)
maxSum=thisSum;
else if(thisSum<0)
thisSum=0;
return maxSum;
if(arr[left]>0)
return arr[left];
else
return 0;
int center=(left+right)/2;
int maxLeftSum=maxSubSum4(arr,left,center);
int maxRightSum=maxSubSum4(arr,center+1,right);
int maxLeftBorderSum=0,leftBorderSum=0;
for(int i=center;i>=left;i--)
{
leftBorderSum+=arr[i];
if(leftBorderSum>maxLeftBorderSum)
maxLeftBorderSum=leftBorderSum;
int maxRightBorderSum=0,rightBorderSum=0;
for(int j=center+1;j<=right;j++)
rightBorderSum+=arr[j];
if(rightBorderSum>maxRightBorderSum)
maxRightBorderSum=rightBorderSum;
return max3(maxLeftSum,maxRightSum,maxLeftBorderSum+maxRightBorderSum);
int main()
int size;
cin>>size;
int arr[size];
for(int i=0;i<size;i++)
{int r=rand()%1999-999;
arr[i]=r;}
clock_t starttime,endtime;
starttime=clock();
maxSubSum1(arr,size);
endtime=clock();
starttime=clock();
maxSubSum2(arr,size);
endtime=clock();
starttime=clock();
maxSubSum3(arr,size);
endtime=clock();
starttime=clock();
maxSubSum4(arr,0,size-1);
endtime=clock();
OUTPUT: