codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> using namespace std; class Time { private: int hours, min; char time_id[13]; public: Time(){hours = 0; min = 0;}; Time(int h, int m){hours = h; min = m;} Time(int m){hours = m/60; min = m % 60;} // can handle "71 minutes" and will change it to 1:11 h ~Time(){cout << "DTOR time called" << endl;} Time scale( float mult_sc) const; // scales a Time object Time Time::add( Time & t ) ; // adds two Time objects // changes 011220001032 to Time : 10:32 h Time id2time(char*); void show(){cout << hours << ":" << min << "h";} }; class Date { private: int day, month, year; char date_id[15]; public: Date(){day = 0; month = 0; year = 0;}; Date(int d, int m, int y){day = d; month = m; year = y;} ~Date(){cout << "DTOR date called" << endl;}; // changes 011220001032 to Date : 1.1.2000 Date id2date(char*id2d); void show(){cout << day << "." << month << "." << year;} }; class Pump { int power_of_pump; // power of the pump char* pump_id; //011220001032 means first of December 2000 at 10:32h Time time_built; // Time variable, when the pump was built Date date_built; // Date variable, when the pump was built public: Pump(); Pump(int pow_p, char *s); ~Pump(); void show(){cout << "Pump ID : " << pump_id << " , Pump manufactured: "; date_built.show(); cout << " at "; time_built.show(); cout << endl;} //… }; class Motor { int power_of_motor;// power of the motor char* motor_id;//011220001032 means first of December 2000 at 10:32h Time time_built;// Time variable, when the motor was built Date date_built;// Date variable, when the motor was built public: Motor(); Motor(int pow_m, char *s); ~Motor(); void show(){cout << "Motor ID : " << motor_id << " , Motor manufactured: "; date_built.show(); cout << " at "; time_built.show(); cout << endl;} //… }; class Dishwasher { Pump pump; // the pump inside the dishwasher Motor motor;// the motor inside the dishwasher char* washer_id;//011220001032 means first of December 2000 at 10:32h Time time_built;// Time variable, when the Dishwasher was built Date date_built;// Date variable, when the Dishwasher was built int washer_running;// 0 not running, 1 running bool door_is_open; // 1 for yes float max_load; // in kg float act_load; // in kg float detergent_needed; // in gram float detergent_available; // in gram Time washing_time; // a time object, like 1:15 h Date id_2_date(char*); // converts string into Date/Time objects float calc_detergent(); // = (act_load)*(act_load) in gram // = 0:20:00 + 6 * int(act_load) : Example: act_load = 8.5 kg -> 71 min Time calc_washing_time(); public: Dishwasher(Pump, Motor, char*, float); ~Dishwasher(); // Dishwasher(Dishwasher&dw); void start(); // only if door is closed void close_door(){door_is_open = 0;} void open_door(){door_is_open = 1;} void load_dishes(float); // up to max_load kg... void fill_in_detergent(float); void show(); }; //----------------CTOR/DTOR---TIME-----------------// //----------------FUNCTIONS----TIME-----------------// Time Time::scale( float mult_sc) const { Time New_time; long total_minutes = hours * mult_sc *60 + min * mult_sc; New_time.hours = total_minutes / 60; New_time.min = total_minutes % 60 ; return New_time; } Time Time::add(Time & t ) { Time total; total.min = min + t.min; total.hours = hours + t.hours + total.min / 60; total.min %= 60 ; return total; } Time Time::id2time(char *s_id2t){ hours = (s_id2t[8] - '0') * 10 + (s_id2t[9] - '0') ; min = (s_id2t[10] - '0') * 10 + (s_id2t[11] - '0') ; return *this; } //----------------CTOR/DTOR---DATE-----------------// //----------------FUNCTIONS----DATE-----------------// Date Date::id2date(char *s_id2d){ day = (s_id2d[0] - '0') * 10 + (s_id2d[1] - '0') ; month = (s_id2d[2] - '0') * 10 + (s_id2d[3] - '0') ; year = (s_id2d[4] - '0') * 1000 + (s_id2d[5] - '0') * 100 + (s_id2d[6] - '0') * 10 + (s_id2d[7] - '0'); return *this; } //----------------CTOR/DTOR---PUMP-----------------// Pump::Pump(int pow_p, char *s){ power_of_pump = pow_p; pump_id = new char [(strlen(s)+1)]; strcpy (pump_id,s); time_built.id2time(pump_id); date_built.id2date(pump_id); } Pump::~Pump(){ delete [] pump_id; } //----------------FUNCTIONS----PUMP-----------------// //----------------CTOR/DTOR---MOTOR-----------------// Motor::Motor(int pow_m, char *s){ power_of_motor = pow_m; motor_id = new char [(strlen(s)+1)]; strcpy (motor_id,s); time_built.id2time(motor_id); date_built.id2date(motor_id); } Motor::~Motor(){ delete [] motor_id; } //----------------FUNCTIONS----MOTOR-----------------// //----------------CTOR/DTOR---DISHWASHER-----------------// Dishwasher::Dishwasher(Pump p, Motor m, char *str, float f) : pump(p), motor(m), max_load(f) { act_load = 0; detergent_available = 0; washer_id = new char [(strlen(str)+1)]; strcpy (washer_id,str); time_built.id2time(washer_id); date_built.id2date(washer_id); } Dishwasher::~Dishwasher(){ delete [] washer_id; } //----------------FUNCTIONS----DISHWASHER-----------------// void Dishwasher::show(){ cout << "Dishwasher Status: NOT running ... " << endl; cout << "Dishwasher ID: " << washer_id << "," << endl; cout << "Dishwasher manufactured: "; date_built.show(); cout << " at "; time_built.show(); cout << "Dishwasher motor:" << endl; motor.show(); cout << "Dishwasher pump:" << endl; pump.show(); cout << "Max load is " << max_load << " kg" << endl; cout << "Actual load is " << act_load << " kg" << endl; cout << "Detergent available is " << detergent_available << " gram" << endl; //estimated washing time 0:20h } //------------------------------------------------------------------- void main(){ // just to test Time class Time time1(1,31); // 1:31 h time1 = time1.scale(2); // 3:02 h time1.show(); cout << endl; Time time2(71); // 1:11 h time2.show(); time1 = time2.add(time1); time1.show(); Time time3; time3.id2time("011219991143"); time3.show(); Date date1; date1.id2date("111229991143"); date1.show(); cout << endl; // just to test Pump pump1(160, "011219991143"); pump1.show(); Motor motor1(1100, "020119590932"); motor1.show(); // Siemens dishwasher cout << "------------siemens 1) ----------------------------" << endl; // Siemens dishwasher: // - contains a pump with 160 watts, pump ID "011219991143" // - contains a motor with 1300 watts, motor ID "081220031201" // - the ID of the dishwasher is "010720081032" // - capacity is 17.5 kg Dishwasher siemens( Pump(160, "011219991143"), Motor(1300, "081220031201"), "010720081032", 17.5); siemens.show();/* siemens.start(); siemens.close_door(); siemens.start(); siemens.load_dishes(10); siemens.close_door(); siemens.start(); siemens.fill_in_detergent(20); siemens.start(); siemens.fill_in_detergent(80); siemens.start(); cout << "------------------siemens 2) --------------------" << endl; siemens.open_door(); siemens.load_dishes(3); siemens.start(); siemens.close_door(); siemens.fill_in_detergent(80); siemens.start(); siemens.show(); cout << "siemens done..." << endl; /* // main() will continue during the lab with aMiele dishwasher // Miele dishwasher cout << "-------------------------------miele 1) -------------------------------" << endl; Dishwasher miele( Pump(500, "010919931011"), Motor(2000, "071120021007"), "010920071152", 20.5); miele.show(); miele.start(); miele.load_dishes(15); miele.close_door(); miele.start(); miele.fill_in_detergent(120); miele.start(); miele.fill_in_detergent(80); miele.start(); cout << "-------------------------------miele 2) -------------------------------" << endl; miele.load_dishes(6); miele.start(); miele.open_door(); miele.load_dishes(3); miele.start(); miele.close_door(); miele.fill_in_detergent(480); miele.start(); miele.show(); cout << "miele done..." << endl; */ }
Private
[
?
]
Run code
Submit