Что изменить в программе? Не могу додумать

216
19 февраля 2019, 04:50

Есть класс часы и статический атрибут часовой пояс. Необходимо перевести все часы. Написал программу но она какая-то тривиальная что-ли. Может кто-нибудь что-нибудь подскажет чтобы ее улучшить.

  #include<iostream>
#include<ctime>
#include<Windows.h>
#pragma warning(disable: 4996)
using namespace std;
/* ласс "„асы"*/
class Clock {
    time_t rawtime;
    struct tm* timeinfo;
public:
    static int time_zone; //статический атрибут - часовой по¤с
    // онструктор без параметров
    Clock() 
    {
        time(&rawtime);
        timeinfo = localtime(&rawtime); //получить текущее системное врем¤
    }
    /*‘ункци¤ вывода времени на экран с учетом часового по¤са*/
    void print_time() {
        if (this->timeinfo->tm_hour + time_zone > 24)
        {
            this->timeinfo->tm_hour = (this->timeinfo->tm_hour + time_zone) - 24;
            cout << this->timeinfo->tm_hour << ":" << this->timeinfo->tm_min << ":" << this->timeinfo->tm_sec << endl;
        }
        else {cout << this->timeinfo->tm_hour + time_zone << ":" << this->timeinfo->tm_min << ":" << this->timeinfo->tm_sec << endl; }
    }
    //статический метод, который измен¤ет значение статического атрибута
    static void modifie(int a)
    {
        time_zone = a;
    }   
};
int Clock::time_zone = 0; //начальна¤ инициализаци¤ статической переменной
void main()
{
    setlocale(LC_ALL, "rus");
    Clock a;
    Sleep(5000); //временна¤ задержка
    Clock b;
    cout << "¬рем¤ є1 (" << Clock::time_zone << "- ый час.по¤с) = ";
    a.print_time();
    cout << "¬рем¤ є2 (" << Clock::time_zone << "- ый час.по¤с) = ";
    b.print_time();
    Clock::modifie(14);
    cout << "¬рем¤ є1 (" << Clock::time_zone << "- ый час.по¤с) = ";
    a.print_time();
    cout << "¬рем¤ є2 (" << Clock::time_zone << "- ый час.по¤с) = ";
    b.print_time();
    system("pause");

}

Answer 1

1) использовать локали, т.к. работа с часовыми поясами зависит от региона

2) использовать UTF-8 для вывода строк, т.к. русский язык

Могу посоветовать библиотеку ICU для обеих проблем.

READ ALSO
Сохранить текущее состояние окон в emacs

Сохранить текущее состояние окон в emacs

Экран разбит на 3 окна вертикально, и крайнее левое вертикальное окно разбито на 2 окна горизонтально(вверху occur, внизу shell)Как сохранить это...

132
Исключение в c++

Исключение в c++

Написана одна программа на с++,где есть вот такая функция

122
Комбинирование классов стратегий

Комбинирование классов стратегий

Начал читать Александреску, и наткнулся на следующий код в начале книги:

131
C++, const методы

C++, const методы

Рассмотрим пример:

145