Мое задание состоит в следующем:
Создать класс time, имитирующий единицы измерения времени. Класс должен содержать поля типа int: для хранения значения часов, минут, секунд и часового пояса. Поля объектов инициализировать конструктором по умолчанию и конструктором с параметрами. Класс должен содержать константный метод вывода значений полей в формате hh:mm:ss и перегруженную операцию вычитания (сложения) (-/+) объектов типа time. Операция вычитания (сложения), примененная к объектам типа time, возвращает величину временного промежутка.
Класс-наследник должен по значению московкого времени определять значение времени в заданном часовом поясе часовых поясах.
Клиент (программа WinMain) должна продемонстрировать возможности обоих классов.
Я написал следующее консольное приложение
Код: Выделить всё
//---------------------------------------------------------------------------
#include <iostream.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
class ttime
{
protected:
int hours, minutes, seconds, zone;
public:
ttime(): hours(0),minutes(0),seconds(0),zone(0) // Конструктор без параметров
{}
// Конструктор с 4-мя аргументами
ttime(int h, int m, int s, int z):
hours(h),minutes(m),seconds(s),zone(z)
{}
void show_time()
{
if ((minutes<10) && (seconds<10))
cout<<hours<<":"<<"0"<<minutes<<":"<<"0"<<seconds<<" ("<<zone<<")";
if ((minutes<10) && (seconds>=10))
cout<<hours<<":"<<"0"<<minutes<<":"<<seconds<<" ("<<zone<<")";
if ((minutes>=10) && (seconds<10))
cout<<hours<<":"<<minutes<<":"<<"0"<<seconds<<" ("<<zone<<")";
if ((minutes>=10) && (seconds>=10))
cout<<hours<<":"<<minutes<<":"<<seconds<<" ("<<zone<<")";
}
ttime operator+(ttime t);
};
ttime ttime: :o perator+(ttime t)
{
int s=seconds+t.seconds;
int m=minutes+t.minutes;
int h=hours+t.hours;
int z=zone+t.zone;
if (s>59)
{s-=60; m++;};
if (m>59)
{m-=60; h++;};
if (z>23)
{z-=24;};
if (h>23)
{h-=24;};
return ttime(h,m,s,z);
};
class moscow: public ttime
{
public:
void calculate_time(int hr, int mn, int sc, int zn)
{
int h, m, s, z;
switch (zn)
{
case 0: {h=hr-3; m=mn; s=sc; z=zn; break;}
case 1: {h=hr-2; m=mn; s=sc; z=zn; break;}
case 2: {h=hr-1; m=mn; s=sc; z=zn; break;}
case 3: {h=hr; m=mn; s=sc; z=zn; break;}
case 4: {h=hr+1; m=mn; s=sc; z=zn; break;}
case 5: {h=hr+2; m=mn; s=sc; z=zn; break;}
case 6: {h=hr+3; m=mn; s=sc; z=zn; break;}
case 7: {h=hr+4; m=mn; s=sc; z=zn; break;}
case 8: {h=hr+5; m=mn; s=sc; z=zn; break;}
case 9: {h=hr+6; m=mn; s=sc; z=zn; break;}
case 10: {h=hr+7; m=mn; s=sc; z=zn; break;}
case 11: {h=hr+8; m=mn; s=sc; z=zn; break;}
case 12: {h=hr+9; m=mn; s=sc; z=zn; break;}
case 13: {h=hr+10; m=mn; s=sc; z=zn; break;}
case 14: {h=hr+11; m=mn; s=sc; z=zn; break;}
case 15: {h=hr+12; m=mn; s=sc; z=zn; break;}
case 16: {h=hr+13; m=mn; s=sc; z=zn; break;}
case 17: {h=hr+14; m=mn; s=sc; z=zn; break;}
case 18: {h=hr+15; m=mn; s=sc; z=zn; break;}
case 19: {h=hr+16; m=mn; s=sc; z=zn; break;}
case 20: {h=hr+17; m=mn; s=sc; z=zn; break;}
case 21: {h=hr+18; m=mn; s=sc; z=zn; break;}
case 22: {h=hr+19; m=mn; s=sc; z=zn; break;}
case 23: {h=hr+20; m=mn; s=sc; z=zn; break;}
};
if (s>59)
{s-=60; m++;};
if (m>59)
{m-=60; h++;};
if (z>23)
{z-=24;};
if (h>23)
{h-=24;};
if ((m<10) && (s<10))
cout<<h<<":"<<"0"<<m<<":"<<"0"<<s<<" ("<<z<<")";
if ((m<10) && (s>=10))
cout<<h<<":"<<"0"<<m<<":"<<s<<" ("<<z<<")";
if ((m>=10) && (s<10))
cout<<h<<":"<<m<<":"<<"0"<<s<<" ("<<z<<")";
if ((m>=10) && (s>=10))
cout<<h<<":"<<m<<":"<<s<<" ("<<z<<")";
};
};
void main()
{
char* Rus(const char* text);
int hh,mm,ss,zz;
ttime t1(12,24,07,3);
ttime t2(17,24,07,8);
ttime t3;
moscow m;
cout<<Rus("Введите московское время в формате Ч М С")<<endl;
cin>>hh>>mm>>ss; cout<<endl;
ttime t(hh,mm,ss,3);
cout<<Rus("Московское время: ");
t.show_time();
cout<<endl;
cout<<endl;
cout<<Rus("Введите часовой пояс (от 0 до 23): ");
cin>>zz;
cout<<endl;
cout<<Rus("Время в ")<<zz;
cout<<Rus("-м часовом поясе: ");
m.calculate_time(hh,mm,ss,zz);
getchar();
getchar();
}
//---------------------------------------------------------------------------
char bufRus[256];
char* Rus(const char* text) {
CharToOem(text, bufRus);
return bufRus; }
Я из всех языков знаю Паскаль, а на С++ я писал только консоль.
Не мог бы кто-нибудь из вас написать по данному заданию визуальное приложение?
Очень прошу.
Заранее большое спасибо.
P.S. Кодить нужно в Borland C++Builder 6.0
С уважением, Alex Burn.