GVA SUPPORT

Відповідь на запитання № 1308054400
Text:
	ФІО = Горбаченко В.А.

 Запитання:/*
  Визначити клас дріб. (Чисельник і знаменник цілі числа). Реалізувати операції додавання,
  віднімання, множення і ділення дробів і порівняння ций дробів. 
  Перегрузка дробов.

 
*/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;
class TDrob{ // клас дроб
      public:
      int c,z; // чисельник і знаменник
      void Skorotutu(){ // метод скорочує дріб
           int max=0,   // максимальне число
           i=2;            // лічильник починається з двійки
           if (z>c) {max=z;} else {max=c;}// визначаємо максимальне число
           while (i<=max){ // цикл до тих пір поки i буде менше max
                 if ( z % i == 0 && c % i == 0 ){// якщо чисельник і знаменник дільться націло, то
                    z/=i;
                    c/=i;
                    i=2; // зкидуємо, для перестраховки ))
                 }
                 i++;                 
           }
      }
      void Print(){ // метод виводить дріб на екран 
           Skorotutu();
           if (c==z){ // якщо чисельник і знаменний дорівнюють, то явно що тут одиниця
              cout<<" PRINT -> 1"<<endl;
              return ;
           }
           if (c==0){ // якщо Чисельник == 0 то якно тут 0
              cout<<" PRINT -> 0"<<endl;
              return ;
           }
           cout<<" PRINT -> "<<c<<" / "<<z<<endl; // інакше виводимо те що є
           return ;
           
           
      }
      void Enter(){ // метод зчитує дроб
           cout<<" DROB ENTER\n";
           cout<<" Enter 4uselnuk  : ";
           cin>>c;
           cout<<" Enter ZNAMENNUK : ";
           cin>>z;
           Skorotutu();
      }
      
      TDrob TDrob::operator + (TDrob b){ // перевантаження оператора +
            TDrob temp; // створюємо допоміжну змінну
            if (z==b.z)  // якщо знаменник першого операнда == знаменнику другого операнда,
            {// то виконуємо таке
               temp.c=c+b.c;         
               temp.z=z;
            }
            else 
            {// інакше ...
                 temp.z=z*b.z;
                 temp.c=c*b.z+b.c*z;
            }                  
            temp.Skorotutu();
            return temp; // повертаємо результат додаванна
      }

      bool TDrob::operator == (TDrob b){ // перевантаження порівнання
      // повертає true чи false
           Skorotutu(); 
           b.Skorotutu();
           if ( z==b.z  && c==b.c) return true;
           else return false;
      }



      TDrob TDrob::operator - (TDrob b){ // перевантаження оператора -
            TDrob temp; // аналогічно до попереднього
            if (z==b.z) 
            {// якщо знаменники рівні, то віднімаємо тільки знаменники
               temp.c=c-b.c;         
               temp.z=z;
            }
            else 
            {// інакше по правилу віднімання
                 temp.z=z*b.z;
                 temp.c=c*b.z-b.c*z;
            }                  
            temp.Skorotutu();                  
            return temp;
      }


      TDrob TDrob::operator * (TDrob b){// перевантаження оператиора *
            TDrob temp;
            temp.c = c*b.c;
            temp.z = z*b.z;
            temp.Skorotutu();
            return temp;
      }
      TDrob TDrob::operator / (TDrob b){ // перевантаження оператора /
            TDrob temp;
            temp.c = c*b.z;
            temp.z = z*b.c;
            temp.Skorotutu();
            return temp;
      }

};
int main(){
    TDrob a,b,c; // створюємо змінні а, б та це тибу ДРОБ
    /// зчитуємо з клавіатури наші дроби (методи в класі ТДРОБ)
    a.Enter();
    b.Enter();
    
    //виводимо на екран зчитані дані
    a.Print();
    b.Print();    
    
    
    cout<<endl;


// без коментарыв...
    c=a+b;
    cout<<"plus  = ";
    c.Print();// виводимо результат....

// далі аналогічно...
    c=a-b;
    cout<<"minus = ";
    c.Print();


    c=a*b;
    cout<<"mnoj  = ";
    c.Print();

    c=a/b;
    cout<<"div   = ";
    c.Print();

    if (a==b) {cout<<" A == B \n";} else {cout<<" A != B \n";}
    
    system("pause");
    return 0;

}


====================================	
Ваша відповідь