Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
DoctorCyborg
0 / 0 / 0
Регистрация: 03.12.2013
Сообщений: 8
#1

Найти номер N дня с начала года - C++

03.12.2013, 20:47. Просмотров 1732. Ответов 6
Метки нет (Все метки)

Скоро последний день сдачи очень прошу, помогите (Вы явно сечете в этом).
1. Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N этого дня с начала года (високосные года учитывать. Високосные года – это те, у которых номер делится на 400, и те, у которых номер делится на 4, но не делится на 100).
2. Решение задачи оформит в виде функции, которая получает в качестве параметров значения D, M, Y. Функция возвращает количество дней.
Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 20:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти номер N дня с начала года (C++):

Найти номер дня с начала года - C++
Помогите решить задачу пожалуйста Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N этого дня с начала...

Определить номер дня недели для заданного номера дня года - C++
а как это примерно будет на C++ ?

Определить номер дня недели для заданного дня года - C++
Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, ..., 6 — суббота. Дано целое число K, лежащее в...

Выведите номер дня недели для данного дня года - C++
Помогите,пожалуйста...Среда Free Pascal Дан порядковый номер дня года (отсчет идет с 1-го января). Требуется вывести номер дня недели...

Определить номер дня недели для K дня года - C++
Дни недели пронумерованы следующим образом: 1-понедельник, 2-вторник,6-суббота, 7-воскресенье. Дано целое число K, лежащее в диапазоне...

Определить номер дня недели для K-го дня года - C++
Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, …, 6 — суббота. Дано целое число K, лежащее в...

6
Tsin
716 / 461 / 132
Регистрация: 30.12.2012
Сообщений: 1,252
Записей в блоге: 2
Завершенные тесты: 3
03.12.2013, 20:51 #2
DoctorCyborg, своих наработок по этому заданию у вас нет?
1
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,554
Завершенные тесты: 1
03.12.2013, 21:50 #3
Цитата Сообщение от DoctorCyborg Посмотреть сообщение
даны три числа D, M, Y, которые обозначают число, месяц и год
Которое из них обозначает что?

Цитата Сообщение от DoctorCyborg Посмотреть сообщение
в виде функции, которая получает в качестве параметров значения D, M, Y. Функция возвращает количество дней
C++
1
2
3
4
5
6
int RetDayCountFunc( int D, int M, int G )
{
int CoundDay;
/*Здесь как-то вычисляем*/
return CountDay;
}
2
FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
03.12.2013, 22:26 #4
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
140
141
142
143
144
145
146
147
148
149
150
151
#include <iostream>
using namespace std;
int CountDay(int Day, int Month, int Yeah);
int main()
{
    int Day, Month, Year;
    cout<<"Enter Day, Month, Year"<<endl;
    do
    {
        cin>>Day>>Month>>Year;
    }while(Day >31 || Month >12);
    cout<<CountDay(Day, Month, Year);
    system("Pause");
    return 0;
}
 
int CountDay(int Day, int Month, int Year)
{
    int N;
    if(Year%4 != 0)//Не високосный год
    {
        switch(Month)
        {
        case 1:
            {
                N = Day;
                break;
            }
        case 2:
            {
                N = 31 + Day;//Февраль
                break;
            }
        case 3:
            {
                N = 59 + Day;//Март
                break;
            }
        case 4:
            {
                N = 90 + Day;//Апрель
                break;
            }
        case 5:
            {
                N = 120 + Day;//Май
                break;
            }
        case 6:
            {
                N = 151 + Day;//Июнь
                break;
            }
        case 7:
            {
                N = 181 + Day;//Июль
                break;
            }
        case 8:
            {
                N = 212 + Day;//Август
                break;
            }
        case 9:
            {
                N = 243 + Day;//Сентябръ
                break;
            }
        case 10:
            {
                N = 273 + Day;//Октябръ
                break;
            }
        case 11:
            {
                N = 304 + Day;//Ноябръ
                break;
            }
        case 12:
            {
                N = 334 + Day;//Декабръ
                break;
            }
        }
    }
    else//високосный год
        switch(Month)
        {
        case 1:
            {
                N = Day;
                break;
            }
        case 2:
            {
                N = 31 + Day;//Февраль
                break;
            }
        case 3:
            {
                N = 60 + Day;//Март
                break;
            }
        case 4:
            {
                N = 91 + Day;//Апрель
                break;
            }
        case 5:
            {
                N = 121 + Day;//Май
                break;
            }
        case 6:
            {
                N = 152 + Day;//Июнь
                break;
            }
        case 7:
            {
                N = 182 + Day;//Июль
                break;
            }
        case 8:
            {
                N = 213 + Day;//Август
                break;
            }
        case 9:
            {
                N = 244 + Day;//Сентябръ
                break;
            }
        case 10:
            {
                N = 274 + Day;//Октябръ
                break;
            }
        case 11:
            {
                N = 305 + Day;//Ноябръ
                break;
            }
        case 12:
            {
                N = 335 + Day;//Декабръ
                break;
            }
        }
    return N;
}
Добавлено через 22 минуты
Чуть подумал и оптимизировал код:

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
#include <iostream>
using namespace std;
int CountDay(int Day, int Month, int Yeah);
int main()
{
    int Day, Month, Year;
    cout<<"Enter Day, Month, Year"<<endl;
    do
    {
        cin>>Day>>Month>>Year;
    }while(Day >31 || Month >12);
    cout<<CountDay(Day, Month, Year);
    system("Pause");
    return 0;
}
 
int CountDay(int Day, int Month, int Year)
{
    int N(0), Mounthes[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, i(0);
    int Mounthes_2[12]={31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if(Year%4 != 0)//not
    {
        do
        {
            N += Mounthes[i];
            i++;
        }while(i != Month);
    }
    else
        do
        {
            N += Mounthes_2[i];
            i++;
        }while(i != Month);
    return N + Day;
}
3
iiieoi
Заблокирован
23.08.2015, 16:11 #5
Цитата Сообщение от FAQEnD Посмотреть сообщение
Чуть подумал и оптимизировал код:
Думается вот так будет совсем правильно:
C++
1
2
3
4
5
6
7
8
9
10
11
int CountDay(int Day, int Month, int Year)
{
    int N(0), i(0), Mounthes[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        while(i != Month-1)
        {
            N += Mounthes[i];
            i++;
        };
    if ((( Year%4 == 0 && Year%100 != 0 ) || Year%400 == 0) && Month > 2 ) N++;
    return N + Day;
}
0
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
23.08.2015, 16:51 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
 
namespace dt = boost::gregorian;
 
int main (int argc, char *argv[])
{
    int year, month, day;
    std::cin >> day >> month >> year;
    std::cout << dt::date (year, month, day).day_of_year() << std::endl;
    return 0;
}
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
23.08.2015, 17:09 #7
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
/*
1. Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N этого дня
с начала года (високосные года учитывать. Високосные года – это те, у которых номер делится
на 400, и те, у которых номер делится на 4, но не делится на 100).
2. Решение задачи оформит в виде функции, которая получает в качестве параметров 
значения D, M, Y. Функция возвращает количество дней.
*/
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
int     days
    (
        int     day,
        int     month,
        int     year
    )
{
    int     a   =   (14 - month) / 12;
    int     y   =   year - a;
    int     m   =   month + 12 * a - 3;
 
    return      day
            +   (153 * m + 2) / 5
            +   365 * y
            +   y / 4
            -   y / 100
            +   y / 400;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     day_index
    (
        int     day,
        int     month,
        int     year
    )
{
    return      days(   day,    month,  year    )
            -   days(   0,      1,      year    );
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        std::cout   <<  "day\t: ";
        int     day     =   0;
        std::cin    >>  day;
 
        std::cout   <<  "month\t: ";
        int     month   =   0;
        std::cin    >>  month;
 
        std::cout   <<  "year\t: ";
        int     year    =   0;
        std::cin    >>  year;
 
        std::cout   <<  day_index   (
                                        day,
                                        month,
                                        year
                                    )
 
                    <<  std::endl;
 
        system("pause");
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }//for
}
0
23.08.2015, 17:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2015, 17:09
Привет! Вот еще темы с ответами:

Заданы число и месяц невисокосного года. Вычислить порядковый номер даты, начиная отсчет с начала года - C++
Заданы два натуральных числа a,b которые обозначают число и месяц не високосного года. Вычислить порядковый номер даты, начиная отсчет с...

Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было вторником. - C++
Задача на С++ Вот условие: Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, … , 6 — суббота, 7 — воскресенье....

Заданы два натуральных числа. Вычислить порядковый номер даты, начиная отсчет с начала года - C++
Заданы два натуральных числа a,b которые обозначают число и месяц не високосного года. Вычислить порядковый номер даты, начиная отсчет с...

Определить порядковый номер того дня високосного года, который имеет заданую дату и месяц - C++
Задание в С++ &quot;Определить порядковый номер того дня високосного года, который имеет заданую дату и месяц&quot;. Вот что смог написать по...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru