write my assignment 29116

Hi so Im creating a fraction calculator that also finds the gcd. My problem is that everytime I do the addition operator it comes out different from what I expect.

My code is below:

#include <iostream>

using namespace std;

double gcd (int, int);

int main (){

   char op, slash, repeat;

   int num1, den1, num2, den2, resNum1, resNum2, big, small, ans;

do{   

   cout << “Enter the first fraction: “;

   cin >> num1 >> slash >> den1;

      while (den1 == 0){

         cout << “Denominators cannot be equal to zero. Please reenter entire fraction with valid input: “;

         cin >> num1 >> slash >> den1;

      };

   cout << “Enter operation: “;

   cin >> op;

   cout << “Enter the second fraction: “;

   cin>> num2 >> slash >> den2;

      while (den2 == 0){

         cout << “Denominators cannot be equal to zero. Please reenter entire fraction with valid input: “;

         cin>> num2 >> slash >> den2;

      };

   switch (op){   

      case ‘+’:

         resNum1 = (num1*den2 + num2*den1);

         resNum2 = (den1*den2);

            if (resNum1 > resNum2){

            big = num1;

            small = num2;

            }

            else {

            small = resNum1;

            big = resNum2;

            }

         ans = gcd (small, big);

         cout << resNum1/ans << “/” << resNum2/ans;            

         break;

      case ‘-‘:

         resNum1 = (num1*den2 – num2*den1);

         resNum2 = (den1*den2);

            if (resNum1 > resNum2){

            big = num1;

            small = num2;

            }

            else {

            small = resNum1;

            big = resNum2;

            }

         ans = gcd (small, big);

         cout << resNum1/ans << “/” << resNum2/ans;            

         break;

      case ‘/’:

         resNum1 = (num1*den2);

         resNum2 = (num2*den1);

            if (resNum1 > resNum2){

            big = num1;

            small = num2;

            }

            else {

            small = resNum1;

            big = resNum2;

            }

         ans = gcd (small, big);

         cout << resNum1/ans << “/” << resNum2/ans;            

         break;

      case ‘*’:

         resNum1 = (num1*num2);

         resNum2 = (den1*den2);

            if (resNum1 > resNum2){

            big = num1;

            small = num2;

            }

            else {

            small = resNum1;

            big = resNum2;

            }

         ans = gcd (small, big);

         cout << resNum1/ans << “/” << resNum2/ans;   

         break;

      default: break;

   }   

   do{

      cout << “nContinue? (y/n): “;

      cin >> repeat;

   } while (repeat != ‘y’ && repeat != ‘Y’ && repeat != ‘n’ && repeat != ‘N’);

} while (repeat == ‘y’ || repeat == ‘Y’);

   return 0;

}

double gcd (int small, int big){

   int rem;

   rem = big%small;

   while (rem != 0){

      small = rem;

      rem = big%rem;

   }

   return (small);

}

 
"Looking for a Similar Assignment? Get Expert Help at an Amazing Discount!"

Comments are closed.

Hi there! Click one of our representatives below and we will get back to you as soon as possible.

Chat with us on WhatsApp