Форум программистов, компьютерный форум CyberForum.ru

Високосный год - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
ugosdaryn
 Аватар для ugosdaryn
2 / 2 / 1
Регистрация: 17.12.2009
Сообщений: 77
19.09.2010, 09:49     Високосный год #1
Даны три натуральных числа a, b, c представляющих день месяц и год. Для примера 1, 4, 1991 представляет 1-ое апреля 1991 года.
Вывести три числа, представляющие следующую дату.
Пример:
ввод:
1 4 1991
вывод:
2 4 1991
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2010, 09:49     Високосный год
Посмотрите здесь:

Високосный год C++
Определить близжайший високосный год C++
C++ високосный год
C++ високосный год
Високосный год C++
C++ Проверить, високосный ли год, и вычислить сколько членов семьи родились в високосные годы
Определить, високосный ли год C++
C++ Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
19.09.2010, 10:51     Високосный год #2
Точно такое же задание: Получить тройку чисел, соответствующих следующему дню
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
19.09.2010, 10:53     Високосный год #3
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
/////////////////////////////////////////////////////////////////////////////////////
//  Даны три натуральных числа a, b, c представляющих день месяц и год. 
//  Для примера 1, 4, 1991 представляет 1-ое апреля 1991 года.
//  Вывести три числа, представляющие следующую дату.
//  Пример:
//  ввод:
//  1 4 1991
//  вывод:
//  2 4 1991 
/////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
 
void print_next_date(int day, int month, int year)
{
    const int START_YEAR = 1582;
    if(year <= START_YEAR)
    {
        std::cout << "Год должен быть > " 
                  << START_YEAR
                  << "."
                  << std::endl;
        return;
    }
    const int MIN_MONTH = 1;
    const int MAX_MONTH = 12;
    if(month < MIN_MONTH || MAX_MONTH < month)
    {
        std::cout << "Номер месяца должен принадлежать отрезку [" 
                  << MIN_MONTH
                  << ", "
                  << MAX_MONTH
                  << "]."
                  << std::endl;
        return;    
    }
 
    const int MIN_DAY = 1;
 
    if(day < MIN_DAY)
    {
        std::cout << "Число должно быть >= " 
                  << MIN_DAY
                  << "."
                  << std::endl;
        return;
    }
 
    const int MAX_DAY[] = {
                              31, 28, 31, 
                              30, 31, 30, 
                              31, 31, 30, 
                              31, 30, 31
                          };
 
    int the_max_day = MAX_DAY[month - 1];
 
    bool is_leap_year = year % 400 == 0
                        || year % 100 != 0
                           && year % 4 == 0;
 
    if(month == 2 && is_leap_year)
    {
        ++the_max_day;
    }
 
    if(the_max_day < day)
    {
        std::cout << "Число должно быть <= " 
                  << the_max_day
                  << "."
                  << std::endl;
        return;    
    }
 
    if(day < the_max_day)
    {
        std::cout << day + 1
                  << ' '
                  << month
                  << ' '
                  << year
                  << std::endl;
    }
    else if(month < MAX_MONTH)
    {
        std::cout << MIN_DAY
                  << ' '
                  << month + 1
                  << ' '
                  << year
                  << std::endl;    
    }
    else
    {
        std::cout << MIN_DAY
                  << ' '
                  << MIN_MONTH
                  << ' '
                  << year + 1
                  << std::endl;        
    }
}
 
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << "День:  ";
        int day;
        std::cin >> day;
 
        std::cout << "Месяц: ";
        int month;
        std::cin >> month;
 
        std::cout << "Год:   ";
        int year;
        std::cin >> year;    
 
        print_next_date(day, month, year);
    }    
}
Yandex
Объявления
19.09.2010, 10:53     Високосный год
Ответ Создать тему
Опции темы

Текущее время: 14:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru