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 ====================================
|