0 / 0 / 0
Регистрация: 07.12.2021
Сообщений: 12
1

Исправить проблему с расчетом дней между датами

15.12.2021, 21:45. Показов 868. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем, программа вроде правильно находит количество дней и часов между введенными данными, но есть такая проблема, что к примеру она посчитает с 29 февраля до 30 февраля 1 день, хоть таких чисел и не существует. Может считать и хоть с 50 января до 65 января и т.д.

Как можно ограничить ввод данных только реальными датами? К примеру, чтобы если пользователь ввел с 30 января до 35 января, ему либо вывело ошибку, либо сказало еще на вводе, что так нельзя


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <cmath>
#include <ctime>
#include <string>
 
using namespace std;
 
int month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 
int main() {
    setlocale(LC_ALL, "Russian");
    int first_date, first_month, first_year;
    int second_date, second_month, second_year;
    char temp_c;
    cout << "Введите первую дату через точки: ";
    cin >> first_date >> temp_c >> first_month >> temp_c >> first_year;
    while (cin.fail()) {
        cin.clear();
        cin.ignore(1000, '\n');
        cout << "Дата некорректна" << endl;
        cout << "Введите первую дату через точки: ";
        cin >> first_date >> temp_c >> first_month >> temp_c >> first_year;
    }
    cout << "Введите вторую дату через точки: ";
    cin >> second_date >> temp_c >> second_month >> temp_c >> second_year;
    while (cin.fail()) {
        cin.clear();
        cin.ignore(1000, '\n');
        cout << "Дата некорректна" << endl;
        cout << "Введите вторую дату через точки: ";
        cin >> second_date >> temp_c >> second_month >> temp_c >> second_year;
    }
    if (first_year != second_year) {
        cout << "Ошибка. Указаны разные года!";
        return -1;
    }
    if (second_month <= first_month) {
        int tmp;
        tmp = second_date;
        second_date = first_date;
        first_date = tmp;
 
        tmp = second_month;
        second_month = first_month;
        first_month = tmp;
    }
    if (((first_year % 4) == 0) && (((first_year % 100) != 0) || ((first_year % 400) == 0))) {
        month[1]++;
    }
    int days_answer = 0;
    for (int i = first_month - 1; i < second_month - 1; ++i) {
        days_answer += month[i];
    }
    days_answer = days_answer - first_date + second_date;
    cout << "Дней: " << abs(days_answer) << endl;
    cout << "Часов: " << abs(days_answer) * 60;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2021, 21:45
Ответы с готовыми решениями:

Как вычислить кол-во дней между двумя датами и перевести в кол-во лет, мес. дней?
Собственно, как вычислить кол-во дней я знаю: procedure TForm1.Button3Click(Sender: TObject); var...

Количество дней между датами в 1С
Добрый день! Мне нужно вычислить количество дней между датами в регистре накопления. Прописываю...

Количество дней между датами
Здравствуйте. Подскажите можно ли считать в exel количество дней между датами, испольязуя одну...

Разница к-ва дней между датами
Нужно подсчитать разницу в к-ве дней между текущей датой и заданной. Но по скрипту почему-то не...

0
15.12.2021, 21:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2021, 21:45
Помогаю со студенческими работами здесь

Количество дней между 2-мя датами
Помогите найти количество дней меджу двумя датами, если например даты вводяться в 2 поля Edit1 и...

Количество дней между датами
Создаю бд &quot;Библиотека&quot;. необходимо создать расчетное поле количества дней между двумя датами На...

Количество дней между датами
Здравствуйте. Есть две даты в ячейках StringGrid , введенные с помощью MonthCalendar1.Date. Как...

Подсчет дней между датами
всем привет! возникла небольшая загвоздка. подскажите пожалуйста как сделать формулу подсчета...

Количество дней между датами
Здравствуйте! Подскажите пожалуйста как лучше написать программу рассчет колличества дней между...

Количество дней между датами
Помогите с задачей Плыз. Лимит времени 2000/4000/4000/4000 мс. Лимит памяти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru