GVA SUPPORT

Відповідь на запитання № 1306777022
Text:
	ФІО = Пінчук Олександр

 Запитання:створити клас, який би зберігав в собі тиск,(там коротше треба щоб типу вводиш тиск у барах, а програма виводить його у атмосфепах, чи мегапаскалях залежно від цифри у світчі, а потім результат операції / * - + цього тиску на тиск 123 мегапаскалів ) у барах, паскалях, чи атмосферах (це через "світч") і перевантажити додавання, віднімання, множення та ділення, булівські більше та менше довідка: 1 Бар=0.1 МПа=1 атмосфера.

====================================


 ANSWER ====================================

/*

створити клас, який би зберігав в собі тиск,(там коротше треба щоб
типу вводиш тиск у барах, а програма виводить його у атмосфепах, чи
 мегапаскалях залежно від цифри у світчі, а потім результат операції
 / * - + цього тиску на тиск 123 мегапаскалів ) у барах, паскалях, чи
 атмосферах (це через "світч") і перевантажити додавання, віднімання,
 множення та ділення, булівські більше та менше
  довідка: 1 Бар=0.1 МПа=1 атмосфера.
!!! Програма сама по себе громоздкая. Требует доработки. Но идея приблизительно правильная. В ДЕВЦПП выдает ошибку. ... Спросишь у препода, как там надо будет переделать
*/
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <cstring>
using namespace std;
class TBar{
      private:      
      double value;

      public:
      double toMPascal(){
      //         довідка: 1 Бар=0.1 МПа=1 атмосфера.
             return value/10;
      }
      double toAtmosfera(){
      //         довідка: 1 Бар=0.1 МПа=1 атмосфера.
             return value;
      }
      
      double get(){ return value;}
      void set(double v) {value=v;}
// base
      TBar TBar::operator + (TBar b){
           TBar temp;
           temp.set(get()+b.get());
      }
      TBar TBar::operator - (TBar b){
           TBar temp;
           temp.set(get()+b.get());
      }
      TBar TBar::operator * (TBar b){
           TBar temp;
           temp.set(get()*b.get());
      }
      TBar TBar::operator / (TBar b){
           TBar temp;
           temp.set(get()/b.get());
      }
      bool TBar::operator > (TBar b){
           if (get()>b.get()) return true;
           return false;
      }
      bool TBar::operator < (TBar b){
           if (get()<b.get()) return true;
           return false;
      }
// enf of base

};
//==============================================================================

class TMPascal{
      private:

      double value;

      public:
      double get(){ return value;}
      void set(double v) {value=v;}
      double toBar(){
           return value*10;
      }
// base
      TMPascal TMPascal::operator + (TMPascal b){
           TMPascal temp;
           temp.set(get()+b.get());
           return temp;
      }
      TMPascal TMPascal::operator - (TMPascal b){
           TMPascal temp;
           temp.set(get()+b.get());
           return temp;
      }
      TMPascal TMPascal::operator * (TMPascal b){
           TMPascal temp;
           temp.set(get()*b.get());
           return temp;
      }
      TMPascal TMPascal::operator / (TMPascal b){
           TMPascal temp;
           temp.set(get()/b.get());
           return temp;
      }
      bool TMPascal::operator > (TMPascal b){
           if (get()>b.get()) return true;
           return false;
      }
      bool TMPascal::operator < (TMPascal b){
           if (get()<b.get()) return true;
           return false;
      }
// enf of base      

/*      TMPascal TMPascal::operator - (TMPascal b){
           TMPascal temp;
           temp.set(get()+b.get());
      }
      TMPascal TMPascal::operator * (TMPascal b){
           TMPascal temp;
           temp.set(get()*b.get());
      }
      TMPascal TMPascal::operator / (TMPascal b){
           TMPascal temp;
           temp.set(get()/b.get());
      }
      bool TMPascal::operator > (TMPascal b){
           if (get()>b.get()) return true;
           return false;
      }
      bool TMPascal::operator < (TMPascal b){
           if (get()<b.get()) return true;
           return false;
      }
*/
// enf of base      

// TMPascal @ TBar
      TMPascal TMPascal::operator + (TBar b){
           TMPascal temp;
           temp.set(get()+b.get()/10);
      }
      TMPascal TMPascal::operator - (TBar b){
           TMPascal temp;
           temp.set(get()+b.get()/10);
      }
      TMPascal TMPascal::operator * (TBar b){
           TMPascal temp;
           temp.set(get()*b.get()/10);
      }
      TMPascal TMPascal::operator / (TBar b){
           TMPascal temp;
           temp.set(get()/b.get()/10);
      }
      bool TMPascal::operator > (TBar b){
           if (get()>b.get()/10) return true;
           return false;
      }
      bool TMPascal::operator < (TBar b){
           if (get()<b.get()/10) return true;
           return false;
      }
// enf of TMPascal @ TBar      
};
//==============================================================================
class TAtmosfera{
      private:
      double value;
      public:
      double get(){ return value;}
      void set(double v) {value=v;}
      
      // base
      TAtmosfera TAtmosfera::operator + (TAtmosfera b){
           TAtmosfera temp;
           temp.set(get()+b.get());
      }
      TAtmosfera TAtmosfera::operator - (TAtmosfera b){
           TAtmosfera temp;
           temp.set(get()+b.get());
      }
      TAtmosfera TAtmosfera::operator * (TAtmosfera b){
           TAtmosfera temp;
           temp.set(get()*b.get());
      }
      TAtmosfera TAtmosfera::operator / (TAtmosfera b){
           TAtmosfera temp;
           temp.set(get()/b.get());
      }
      bool TAtmosfera::operator > (TAtmosfera b){
           if (get()>b.get()) return true;
           return false;
      }
      bool TAtmosfera::operator < (TAtmosfera b){
           if (get()<b.get()) return true;
           return false;
      }
// enf of base
// TAtmosfera @ bar
      TAtmosfera TAtmosfera::operator + (TBar b){
           TBar temp;
           temp.set(get()+b.get());
      }
      TAtmosfera TAtmosfera::operator - (TBar b){
           TBar temp;
           temp.set(get()+b.get());
      }
      TAtmosfera TAtmosfera::operator * (TBar b){
           TBar temp;
           temp.set(get()*b.get());
      }
      TAtmosfera TAtmosfera::operator / (TBar b){
           TBar temp;
           temp.set(get()/b.get());
      }
      bool TAtmosfera::operator > (TBar b){
           if (get()>b.get()) return true;
           return false;
      }
      bool TAtmosfera::operator < (TBar b){
           if (get()<b.get()) return true;
           return false;
      }
// end

// Ta @ TMPascal

      TAtmosfera TAtmosfera::operator + (TMPascal b){
           TAtmosfera temp;
           temp.set(get()+b.get()*10);
           return temp;
      }
      TAtmosfera TAtmosfera::operator - (TMPascal b){
           TAtmosfera temp;
           temp.set(get()+b.get()*10);
           return temp;
      }
      TAtmosfera TAtmosfera::operator * (TMPascal b){
           TAtmosfera temp;
           temp.set(get()*b.get()*10);
           return temp;
      }
      TAtmosfera TAtmosfera::operator / (TMPascal b){
           TAtmosfera temp;
           temp.set(get()/b.get()*10);
           return temp;
      }
      bool TAtmosfera::operator > (TMPascal b){
           if (get()>b.get()*10) return true;
           return false;
      }
      bool TAtmosfera::operator < (TMPascal b){
           if (get()<b.get()*10) return true;
           return false;
      }
// enf of Ta @ TMPascal
};
//==============================================================================
int EnterType(){ // зчитуємо тиск
    long max=3;
   long nn; // в цю змінну буде зчитуватись число введенне з клавіатури
   do{
      cout<<" TYPES : \n 0) BAR \n 1) MEGAPASCAL\n 2) ATMOSFARA\n";
      cout<<endl<<"Enter number [ 0 - "<<max-1<<" ] :";
      cin>>nn;
   if (nn<0 || nn>max-1) {cout<<endl<<" ERROR!!! "<<endl;}
   }while (nn<0 || nn>max-1); // умова виходу з циклу
   return nn; // воертає ввдеене число
}
//==============================================================================
char EnterOperation(){
     char z;
     do{
     
          cout<<"Enter operation [+,-,/,*]";
          
          z=getch();
          cout<<z<<endl;
     } while (z!='+' && z!='-' &&z!='*' &&z!='/');
     return z;
}
//==============================================================================

int main(){
    TBar a;
    double z;
    cout<<"VVedute (bar) : ";
    cin>>z;
    a.set(z);
    int  i=EnterType();
    switch (i){
           case 0 : cout<<"bar = "<<a.get()<<endl; break;
           case 1 : cout<<"MPascal = "<<a.toMPascal()<<endl;break;
           case 2 : cout<<"Atmosfera = "<<a.toAtmosfera()<<endl;    break;
           default :cout<<" -> Error ! \n"<<endl;break;
    }
    char op=   EnterOperation();
    TMPascal b;
    b.set(123);
    switch (i){
           case 0 : TBar c; c.set( a.get()+ b.toBar()); cout<<" SUM (Bar) = "<<c.get()<<endl; break;
           case 1 : { TMPascal d ; d.set(a.toMPascal()+ b.get()); cout<<" SUM (MPascal) = "<<d.get()<<endl;} break;
           case 2 : TAtmosfera e ; e.set(a.get()+ b.get()/10); cout<<" SUM (Atmosfera) = "<<e.get()<<endl; break;
    }
    //  довідка: 1 Бар=0.1 МПа=1 атмосфера.
    system("pause");  
}



 END of ANSWER ====================================

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