[ create a new paste ] login | about

Link: http://codepad.org/K4Bocuht    [ raw code | output | fork ]

C++, pasted on Jun 10:
#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;
	*/
}


Output:
1
2
3
Line 1: error: "/*" within comment
Line 14: error: extra qualification 'Time::' on member 'add'
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: