Как я могу вычесть две введенные даты (годы, месяцы, дни), принимая во внимание високосные годы - PullRequest
1 голос
/ 16 марта 2019

Я пытался понять, как точно вычесть одну дату из другой в C ++. Оба будут получены через пользовательский ввод. Я думал, что, создав класс вместе с использованием <ctime>, я смогу сделать это, но мне еще предстоит найти, как это сделать, принимая во внимание високосные годы, что может стать причиной потери Точность, которую он может иметь.

Вот как я подходил к задаче:

#include "pch.h"
#include <iostream>
#include <ctime>
using namespace std;

class Year {
private:
    struct tm date3;
    struct tm date2;
    struct tm date;
    int FirstYear, SecondYear;
    int FirstMonth, SecondMonth;
    int FirstDay, SecondDay;

public:
    int DateCalculus(struct tm* date, struct tm* date2);
    void ResultShown();
};

int Year::DateCalculus(struct tm* date, struct tm* date2) {
    struct tm date3;
    date3.tm_year = date->tm_year - date2->tm_year;

    date3.tm_mon = date->tm_mon - date2->tm_mon;
    date3.tm_mday = date->tm_mday - date2->tm_mday;
}

void Year::ResultShown() {
    cout<< date3;
}

int main() {

    struct tm Date = { 0, 0, 12 };  
    struct tm Date2 = { 0, 0, 12 };
    int Firstyear, SecondYear;
    int Firstmonth, SecondMonth;  
    int Firstday, SecondDay;

    cin >> Firstday; cout << "Day 1 " << endl;
    cin >> Firstmonth; cout << "Month 1 " << endl;
    cin >> Firstyear; cout << "Year 1 " << endl;
    cin >> SecondDay; cout << "Day 2 " << endl;
    cin >> SecondMonth; cout << "Month 2 " << endl;
    cin >> SecondYear; cout << "Year 2 " << endl;
    Date.tm_year = Firstyear;
    Date.tm_mon = Firstmonth;  
    Date.tm_mday = Firstday;   

    Year::DateCalculus(&Date, &Date2);

    cout << asctime(&Date2) << std::endl;

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...