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

Вывести разницу дней между двумя датами

02.07.2014, 08:10. Показов 3079. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Ребят, прошу вашей помощи
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <iostream>
using namespace std;
 
class Date{
private:
    int raz, sch;
    int day, day2;
    int month, month2;
    int year, year2;
public:
    Date(){ //создание объекта по умолчанию.
        year = day = month = 1;
    }
    Date(int d, int m, int y){ //создание объекта с указанной датой.
        year = day = month = 1;
        if (m >= 1 && m <= 12){
            month = m;
        }
        if (y > 0) year = y;
        int dz;
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
            dz = 31;
        }
        else if (month == 4 || month == 6 || month == 9 || month == 11){
            dz = 30;
        }
        else if (month == 2){
            if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) dz = 29;
            else dz = 28;
        }
        if (d >= 1 && d <= dz) day = d;
    }
    friend ostream& operator << (ostream& out, const Date& dt)
    {
        out << dt.day << '.' << dt.month << '.' << dt.year;
        return out;
    }
    Date operator + (int days){
        if (days < 0) return *this;
        Date date = Date(*this); //копия
        date.day += days;
 
        while (true){
            int dz;
            if (date.month == 3 || date.month == 1 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12){
                dz = 31;
            }
            else if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11){
                dz = 30;
            }
            else if (date.month == 2){
                if ((date.year % 4 == 0) && (date.year % 100 != 0) || (date.year % 400 == 0)) dz = 29;
                else dz = 28;
            }
            if (date.day > dz){
                date.day -= dz;
                date.month += 1;
            }
            else {
                break;
            }
            if (date.month > 12){
                date.month -= 12;
                date.year += 1;
            }
        }
        return date;
    }
    void writeDate(){
        int d, m, y, d2, m2, y2;
        
        cout << "Write 1st date (like 23 05 2009): ";
        cin >> d >> m >> y;
        year = day = month = 1;
        if (m >= 1 && m <= 12){
            month = m;
        }
        if (y > 0) year = y;
        int dz;
        if (month == 3 || month == 1 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
            dz = 31;
        }
        else if (month == 4 || month == 6 || month == 9 || month == 11){
            dz = 30;
        }
        else if (month == 2){
            if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) dz = 29;
            else dz = 28;
        }
        if (d >= 1 && d <= dz) day = d;
 
        cout << "Write 2nd date (like 23 05 2009): ";
        cin >> d2 >> m2 >> y2;
        year2 = day2 = month2 = 1;
        if (m2 >= 1 && m2 <= 12){
            month2 = m2;
        }
        if (y2 > 0) year2 = y2;
        int dz2;
        if (month2 == 3 || month2 == 1 || month2 == 5 || month2 == 7 || month2 == 8 || month2 == 10 || month2 == 12){
            dz2 = 31;
        }
        else if (month2 == 4 || month2 == 6 || month2 == 9 || month2 == 11){
            dz2 = 30;
        }
        else if (month2 == 2){
            if ((year2 % 4 == 0) && (year2 % 100 != 0) || (year2 % 400 == 0)) dz2 = 29;
            else dz2 = 28;
        }
        if (d2 >= 1 && d2 <= dz) day2 = d2;
 
    
        if (d != d2 && m != m2 && y != y2)
            raz = 0;
            if (y2 >= y & m2>=m & d2>d){
            while (d < d2 & m<m2)
                    d+=1;
                raz ++;
            }
            else if(y>=y2 ){}
            while (d > d2 & m>m2) {
                d2+=1;
                raz++;
            }
            sch = raz;
                cout << "Raznica v dnyah: " << sch << endl;
    };
};
void main(){
    Date d1 = Date();
    d1.writeDate();
    cout << "Date 1: " << d1 << endl;
    cout << "Date 1 + 20 days: " << d1 + 20 << endl;
    cout << "Date 1 + 1000 days: " << d1 + 1000 << endl;
    cout << "Date 1 + ? days: ";
    int n; cin >> n;
    cout << d1 + n << endl;
    system("PAUSE");
}
В функции writeDate в конце я хочу вывести разницу дней между двумя датами. У меня это не очень получается, выводит на экран какую-то фигню
Миниатюры
Вывести разницу дней между двумя датами  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2014, 08:10
Ответы с готовыми решениями:

Вывести разницу в днях между двумя датами
Надо определить количество прошедших дней(даты ввести в формате dd/mm/yyyy)(можно считать что в...

Вывести количество дней между двумя датами (как учитывать високосный год?)
Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и...

Вычислить разницу между двумя датами
1. есть ли функция которая вычислит сколько прошло например с 1934 до 2014. 2. как вычислить сраж...

Определить и вывести количество дней между двумя датами (логические операторы и операторы ветвлений)
Задачка Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить...

1
Модератор
Эксперт С++
13483 / 10740 / 6402
Регистрация: 18.12.2011
Сообщений: 28,651
02.07.2014, 08:46 2
Класс составлен в принципе неправильно:
Цитата Сообщение от mercenaryfess Посмотреть сообщение
private: int raz, sch;
int day, day2;
int month, month2;
int year, year2;
Здесь должны быть только day,month и year.
Остальные переменные вычисляемые, их объявлять надо локально в методах при необходимости.
Тогда бы, в частности, Вы бы заметили, что в методе writeDate()
используется неинициализированная переменная raz.
0
02.07.2014, 08:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 08:46
Помогаю со студенческими работами здесь

Вычислить разницу в днях между двумя заданными датами
Парни надо написать программу, которая будет вычислять разницу в днях между двумя заданными датами.

Программа, определяющая разницу в сутках между двумя датами
Составьте программу определяющую разницу в сутках между двумя датами. Нельзя использовать условный...

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

Количество дней между двумя датами
Хочу спросить кто знает как найти количество дней между двумя датами. ПРИМЕР input ...


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

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

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