Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 45

Найти количество дней между введенными начальной и конечной датой

02.01.2011, 20:46. Показов 1320. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такое задание!
В Вижуал С++ создаем поля для ввода с клавиатуры начальной даты: день, месяц и год,
и конечной: день, месяц и год. И поле в котором будет отображаться количество дней между введенными начальной и конечной датой.

Препод любит такие задания давать, а как их реализовать ума не приложу!
Так что помогите чем можете!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2011, 20:46
Ответы с готовыми решениями:

Найти количество счастливых дней между начальной и конечной датой
Жомарт прочитал в гороскопе что если 7-ое число месяца приходится на вторник,то этот день является счастливым.Его за интересовал вопрос,...

Как заполнить промежуток между начальной датой и конечной датой в пустой таблице?
Возможно ли в MS Accsee в пустой таблице заполнить автоматически промежуток(период) между начальной и конечной датами и как это...

Ввод ASCII-кодов начальной и конечной букв, вывод букв, расположенных между введёнными
Написать exe-программу, которая выведет запрос о коде начальной и конечной букв из ASCII-таблицы и выведет на экран только те буквы,...

13
 Аватар для ZetX
49 / 49 / 17
Регистрация: 23.02.2010
Сообщений: 437
02.01.2011, 21:42
как-то давно баловался и написал прогу вычисляющую кол-во прожитых дней
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 int mm[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 int gr, mr, dr, gs, ms, ds, i, dn=0;
 
 for (i=11; i>(mr-1); i--) dn+=mm[i]; // сколько дней прожил...
 dn+=mm[i]-dr;                       // ...в году рождения
 
 if ((gr%4==0) && (i<2)) dn++;  // если год рождения високосный
 
 for (i=++gr; i<gs; i++)      // дней прожил в полных годах жизни
  {                          //
   if (i%4==0) dn+=366;     //
   else dn+=365;           //
  }                       //
 
 for (i=0; i<(ms-1); i++) dn+=mm[i];  // дней прожил...
 dn+=ds;                             // ...в этом году
 
 if ((gs%4==0) && (i>1)) dn++;      // если этот год високосный
1
 Аватар для Минич
67 / 67 / 7
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 21:57
ZetX, не много некорректно!
Год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400
так что условие вот такое:
C++
1
if (Year % 4 == 0 && Year % 100 != 0 || Year % 400 == 0)
или
C++
1
if (!(Year % 4) && (Year % 100) || !(Year % 400))
2
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
03.01.2011, 18:01
Цитата Сообщение от Минич Посмотреть сообщение
Год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400
почему?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.01.2011, 18:08
Mayonez, эм... Интересный вопрос... Даже не знаю, как ответить... А, во! Потому что.
0
 Аватар для Минич
67 / 67 / 7
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 18:13
silent_1991, классный ответ

Mayonez, учись пользоваться инетом, по крайней мере вики рулит
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.01.2011, 21:05
Минич, ну ё-моё, как мне кажется, энергетика вопроса "Почему?" в этом контексте звучала подобно вопросу "Вы что, дурак?" Вот и последовал такой ответ. Явно вы не просто так выдумали эту формулу и на то есть основания.
Это как на утверждение "Небо голубое" задать вопрос "Почему?" Если действительно хочешь узнать, то открой энциклопедию и посмотри, там есть чёткое научное обоснование, а если это вопрос звучит как "Очень сомневаюсь" - что ж, это твои проблемы)))
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 45
10.01.2011, 13:42  [ТС]
У меня что-то с выводом результата , не работает
C++
1
2
3
4
5
    {
         CString S;
         S.Format ("Прошло дней",dn);
         MessageBox(S);
    }
выводит только "прошло дней"

Добавлено через 20 минут
Наконец высчитывает, но некорректно! Ввожу даты интервал между которыми 2 дня, а мне пишет 380!!!!!

Добавлено через 9 минут
караул, считает не правильно!
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
// 2labDlg.cpp : implementation file
//
 
#include "stdafx.h"
#include "2lab.h"
#include "2labDlg.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int mm[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int g1, m1, d1, g2, m2, d2;
int i, d=0;
 
 
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
 
class CAboutDlg : public CDialog
{
public:
    CAboutDlg();
 
// Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA
 
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL
 
// Implementation
protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
 
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
}
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
        // No message handlers
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
/////////////////////////////////////////////////////////////////////////////
// CMy2labDlg dialog
 
CMy2labDlg::CMy2labDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CMy2labDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CMy2labDlg)
    m_d1 = 0;
    m_m1 = 0;
    m_g1 = 0;
    m_d2 = 0;
    m_m2 = 0;
    m_g2 = 0;
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
 
void CMy2labDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CMy2labDlg)
    DDX_Text(pDX, IDC_EDIT1, m_d1);
    DDX_Text(pDX, IDC_EDIT2, m_m1);
    DDX_Text(pDX, IDC_EDIT3, m_g1);
    DDX_Text(pDX, IDC_EDIT4, m_d2);
    DDX_Text(pDX, IDC_EDIT5, m_m2);
    DDX_Text(pDX, IDC_EDIT6, m_g2);
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CMy2labDlg, CDialog)
    //{{AFX_MSG_MAP(CMy2labDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
/////////////////////////////////////////////////////////////////////////////
// CMy2labDlg message handlers
 
BOOL CMy2labDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
 
 
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);
 
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }
 
    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
    
    // TODO: Add extra initialization here
    
    return TRUE;  // return TRUE  unless you set the focus to a control
}
 
void CMy2labDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}
 
// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
 
void CMy2labDlg::OnPaint() 
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
 
        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
 
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
 
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}
 
// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMy2labDlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}
 
void CMy2labDlg::OnButton1() 
{
    UpdateData(true);
for (i=11; i>(m1-1); i--) d+=mm[i]; // ñêîëüêî äíåé ïðîæèë...
 d+=mm[i]-d1;                       // ...â ãîäó ðîæäåíèÿ
 
 if ((g1%4==0) && (i<2)) d++;  // åñëè ãîä ðîæäåíèÿ âèñîêîñíûé
 
 for (i=++g1; i<g2; i++)      // äíåé ïðîæèë â ïîëíûõ ãîäàõ æèçíè
  {                          //
   if (i%4==0) d+=366;     //
   else d+=365;  
 }
   for (i=0; i<(m2-1); i++) d+=mm[i];  // äíåé ïðîæèë...
d+=d2;                             // ...â ýòîì ãîäó
 
if ((g2%4==0) && (i>1))
d++;      // åñëè ýòîò ãîä âèñîêîñíûé
 
{
         CString S;
         S.Format ("proshlo %i",d);
         MessageBox(S);
}       
UpdateData(false);
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
10.01.2011, 13:44
C++
1
2
3
4
5
{
    CString S;
    S.Format ("Прошло дней %d" ,dn);
    MessageBox(S);
}
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 45
10.01.2011, 14:35  [ТС]
Я написала так, но кол-во дней выводит нереальное, когда ввожу
1.1.1
3.1.1
у меня в ответе 5-ти значное число!!!

Добавлено через 7 минут
ZetX, у меня неправильно работает твоя программа
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
10.01.2011, 15:17
Один вопрос мы земляки? Непрограммистка!!!
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 45
10.01.2011, 15:32  [ТС]
Нет,лучше бы помог!
0
 Аватар для ZetX
49 / 49 / 17
Регистрация: 23.02.2010
Сообщений: 437
10.01.2011, 15:50
добавь в конце
C++
1
2
if (gs==gr && gs%4==0) dn-=366;
if (gs==gr && gs%4!=0) dn-=365;
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 45
10.01.2011, 16:07  [ТС]
все равно должна быть разница 5 дней, а выдает 370

Добавлено через 7 минут
А еще у меня после выполнения программы в строке где год рождения год увеличивается на1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2011, 16:07
Помогаю со студенческими работами здесь

Подсчитать количество дней между двумя введёнными датами
В общем, нужен быстрый код, вычисляющий кол-во дней между двумя датами. Я видел много разных кодов реализующих эту задачу, но не могу в них...

Определить количество дней между двумя датами, введёнными пользователем
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Rus&quot;); int choice;

Как посчитать разницу между датами - конечной и начальной - в днях ?
1 столбец - начальная дата, 2 столбец - конечная дата, как в 3 столбце посчитать разницу между датами - конечной и начальной - в днях ?

Определите разность потенциалов между конечной и начальной точками положения заряда.
В однородном электрическом поле напряженность которого равна E=10^3 В/М перемещают точечный заряд сначала на расстояние l=20 см под углом...

Рассчитывание количества дней, часов, минут между двумя введенными датами
Здравствуйте уважаемые программисты!!! Не очень понимаю программирование. Очень нужна ваша квалифицированная помощь в решении задачи: нужно...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru