Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45

По заданной дате определить дату предыдущего дня

30.03.2017, 20:57. Показов 7582. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По дате d(день) m(месяц) и y(год) определить дату d1(день) m1(месяц) и y1(год) предшествующего дня.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2017, 20:57
Ответы с готовыми решениями:

Определить дату предыдущего дня
Все доброго времени суток. Нужна помощь в решении задачи. Заранее огромное спасибо. Вот собственно и задача: "Дата...

Дата некоторого дня определяется двумя натуральными числами, найти дату предыдущего дня
Дата некоторого дня определяется двумя натуральными числами m (порядковый номер месяца) и n (число). По заданным n и m определить: ·...

По дате d,m,y определить дату следующего дня d1,m1,y1( d-день , m-месяц, y-год). Использовать оператор switch
По дате d,m,y определить дату следующего дня d1,m1,y1( d-день , m-месяц, y-год). Использовать оператор switch

21
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 21:04  [ТС]
я не пойму, что в этом задание использовать.
По дате d(день) m(месяц) и y(год) определить дату d1(день) m1(месяц) и y1(год) предшествующего дня.
Наверно case и if , но надо же еще помнить о том что в 1 месяце 31 д., а может и 30 д.

Добавлено через 39 секунд
И большое спасибо за ответ
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
30.03.2017, 21:16
astasya, Сам-то пытался?
А високосность учитывать?

Добавлено через 1 минуту
На всякий случай
C++
1
2
3
4
5
6
7
int is_leap_year(int year) // * Возвращает 1 если год високосный
{
   if ((year % 4) == 0 && (year % 4000) != 0 &&
      ((year % 100) != 0 || (year % 400) == 0))
   return (1);
   else  return (0);
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
30.03.2017, 21:16
См. ссылки внизу страницы.
И ознакомьтесь с
Рекомендации по созданию тем
0
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 22:01  [ТС]
А день и месяц ?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
30.03.2017, 22:23
Цитата Сообщение от astasya Посмотреть сообщение
А день и месяц ?
Не понял вопроса. Ни день, ни месяц не бывают високосными. Есть Касьян - 29 февраля - с ним особый разговор (то есть не с ним, а с 1 марта)
Цитата Сообщение от astasya Посмотреть сообщение
в 1 месяце 31 д., а может и 30 д
а может быть и 28, и 29
Но все-таки, тем не менее, было бы любопытно посмотреть, до чего вы дошли в решении этой задачи

Добавлено через 1 минуту
Цитата Сообщение от astasya Посмотреть сообщение
Наверно case и if
Ну, это как покатит. Умеете - можно с ними. А можно и без них...Если умеете...

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
d1 = d-1;
m1 = m;
y1 = y;
if (d1==0) {
  m1--;
  if (m1==2) {
    if (is_leap_year(y)) d1 = 29;
    else               d1 = 28;
  }
  else if (m1==4 || m1==6 || m1==9 || m1==11) d1 = 30;
  else d1 = 31;
  if (m1==0) {
    m1 = 12;
    y1--;
 } 
}
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
30.03.2017, 22:25
Цитата Сообщение от Байт Посмотреть сообщение
(year % 4000) != 0
Кстати, забыл спросить, для чего нужна эта проверка? Вроде достаточно делить на 100 и 400 (ну и 4 разумеется).
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
30.03.2017, 22:34
Цитата Сообщение от likehood Посмотреть сообщение
для чего нужна эта проверка?
Погуглите "Григорианский Календарь." Вот Папа Гриша такую проверку ввел. Ему астрономы в пивной подсказали. Там дело в том, что надо синхронизировать вращение Земли вокруг Солнца с ее собственным вращением вокруг оси. Это как если бы у вас в 1 часе было не 3600 секунд, а 3600.0035. И пришлось бы время от времени переводить часовую стрелку. Мы с вами, наверное, вряд ли до 4000-го года доживем, но ведь надо думать и о правнуках!
Математически это, кажется, связано с цепными дробями.
1
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 22:35  [ТС]
#include<iostream>
#include<cstdlib>
#include <clocale>
#include <cstdlib>
using namespace std;
int main()
{

int d, d1, m, m1, y, y1;
setlocale(0, "");
cout << "Введите день, месяц, год";
cin >> d;
cin >> m;
cin >> y;


d1 = d - 1;
m1 = m;
y1 = y;
if (d1 == 0) {
m1--;
if (m1 == 2) {
if ((y)) d1 = 29;
else d1 = 28;
}
else if (m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11) d1 = 30;
else d1 = 31;
if (m1 == 0)
{
m1 = 12;
y1--;
}
}
system("pause");
}

не работает!
0
30.03.2017, 22:40

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Погуглите "Григорианский Календарь."
Да я гуглил, но дальше википедии не смотрел. А там оказывается не всё есть! Как жестоко нас обманули!

0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
30.03.2017, 23:16
Цитата Сообщение от astasya Посмотреть сообщение
не работает!
Фраза совершенно лишенная смысла и информации. В чем ее идиотизм, спросите у других, у меня уже мозоль на языке.
А тегами кода пользоваться не умеете? Без тегов я не могу вам указать на ошибочную строчку вашу. И код ваш выглядит бестолково.
Цитата Сообщение от astasya Посмотреть сообщение
if ((y)) d1 = 29;
что это и зачем? Я вам такое писал?
0
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 23:18  [ТС]
Спасибо за подсказки, но я уже написала сама. Вот, что мне надо было.
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
#include<iostream>
#include<cstdlib>
#include <clocale>
#include <cstdlib>
using namespace std;
void  main()
{
 
    int d, m, y, b;
    setlocale(0, "");
    cout << "Введите день(число)";
    cin >> d;
    cout << "Введите месяц(число)";
    cin >> m;
    cout << "Введите год(число)";
    cin >> y;
 
    switch (d)
    {
    case 1:
        cout << "Предшествующий день 31" << endl; break;
    case 2:
        cout << "Предшествующий день 1" << endl; break;
    case 3:
        cout << "Предшествующий день 2" << endl; break;
    case 4:
        cout << "Предшествующий день 3" << endl; break;
    case 5:
        cout << "Предшествующий день 4" << endl; break;
    case 6:
        cout << "Предшествующий день 5" << endl; break;
    case 7:
        cout << "Предшествующий день 6" << endl; break;
    case 8:
        cout << "Предшествующий день 7" << endl; break;
    case 9:
        cout << "Предшествующий день 8" << endl; break;
    case 10:
        cout << "Предшествующий день 9" << endl; break;
    case 11:
        cout << "Предшествующий день 10" << endl; break;
    case 12:
        cout << "Предшествующий день 11" << endl; break;
    case 13:
        cout << "Предшествующий день 12" << endl; break;
    case 14:
        cout << "Предшествующий день 13" << endl; break;
    case 15:
        cout << "Предшествующий день 14" << endl; break;
    case 16:
        cout << "Предшествующий день 15" << endl; break;
 
    case 17:
        cout << "Предшествующий день 16" << endl; break;
    case 18:
        cout << "Предшествующий день 17" << endl; break;
    case 19:
        cout << "Предшествующий день 18" << endl; break;
    case 20:
        cout << "Предшествующий день 19" << endl; break;
    case 21:
        cout << "Предшествующий день 20" << endl; break;
    case 22:
        cout << "Предшествующий день 21" << endl; break;
    case 23:
        cout << "Предшествующий день 22" << endl; break;
    case 24:
        cout << "Предшествующий день 23" << endl; break;
    case 25:
        cout << "Предшествующий день 24" << endl; break;
    case 26:
        cout << "Предшествующий день 25" << endl; break;
    case 27:
        cout << "Предшествующий день 26" << endl; break;
    case 28:
        cout << "Предшествующий день 27" << endl; break;
    case 29:
        cout << "Предшествующий день 28" << endl; break;
    case 30:
        cout << "Предшествующий день 29" << endl; break;
    case 31:
        cout << "Предшествующий день 30" << endl; break;
    }
    switch (m)
    {
    case 1:
        cout << "Предшествующий месяц декабрь" << endl; break;
    case 2:
        cout << "Предшествующий месяц январь" << endl; break;
    case 3:
        cout << "Предшествующий месяц  февраль" << endl; break;
    case 4:
        cout << "Предшествующий месяц март" << endl; break;
    case 5:
        cout << "Предшествующий месяц апрель" << endl; break;
    case 6:
        cout << "Предшествующий месяц май" << endl; break;
    case 7:
        cout << "Предшествующий месяц июнь" << endl; break;
    case 8:
        cout << "Предшествующий месяц июль" << endl; break;
    case 9:
        cout << "Предшествующий месяц август" << endl; break;
    case 10:
        cout << "Предшествующий месяц сентябрь" << endl; break;
    case 11:
        cout << "Предшествующий месяц октябрь" << endl; break;
    case 12:
        cout << "Предшествующий месяц ноябрь" << endl; break;
    }
 
    b = y - 1;
    cout << "Предшествующий год" << b << endl;
 
        system("pause");
    
}
0
30.03.2017, 23:21

Не по теме:

astasya, спасибо за науку. Буду биссер беречь:D

0
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 23:22  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
if ((y)) d1 = 29;
Насчет этого выражения: Visual Studio пишет, что выражение недействительное.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
30.03.2017, 23:23
Цитата Сообщение от astasya Посмотреть сообщение
C++
1
2
case 1:
cout << "Предшествующий день 31" << endl; break;
Для 1 апреля - да, а для 1 марта - нет.
0
1 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 45
30.03.2017, 23:25  [ТС]
Согласна
0
02.04.2017, 12:39

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Погуглите "Григорианский Календарь."
А можно ссылку? Где вы нашли, что 4000 год не високосный. Я погуглил, везде как под копирку пишут:
год високосный, если:
- номер года кратен 400
- остальные годы — номер года кратен 4 и не кратен 100

Цитата Сообщение от likehood Посмотреть сообщение
Да я гуглил, но дальше википедии не смотрел. А там оказывается не всё есть! Как жестоко нас обманули!
likehood, Вы где-то нашли, что Байт прав? Можно ссылку для самообразования?

0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
02.04.2017, 12:53
Цитата Сообщение от Mohan Посмотреть сообщение
Вы где-то нашли, что Байт прав?
И да и нет.

Да, потому что эта поправка оправдана с астрономической точки зрения.

Нет, потому что официально это не принято - да и зачем, если такая поправка будет актуальна только в 4000 году.

В реальных программах эта поправка, скорее всего, не требуется.

А вообще, я гуглил по запросу "Григорианский календарь 4000".
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.04.2017, 13:23
Цитата Сообщение от likehood Посмотреть сообщение
И да и нет.
Да, потому что эта поправка оправдана с астрономической точки зрения.
Нет, потому что официально это не принято - да и зачем, если такая поправка будет актуальна только в 4000 году.
В реальных программах эта поправка, скорее всего, не требуется.
Господа! Вынужден раскрыть все карты.
Когда-то вашего покорного слугу привлекли к работе над астрологическими программами, математической основой которых являются именно астрономические расчеты. И эти расчеты уже были даны мне как данность. В их числе была и программка по переводу григорианской даты в юлианский день. Поскольку расчет возможен вплоть 16800 года (астрономия и астрология работают с вечностями), то эта поправка там тоже присутствовала. У меня не было оснований сомневаться в ее справедливости. А теперь тем более.
0
02.04.2017, 13:41

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Поскольку расчет возможен вплоть 16800 года (астрономия и астрология работают с вечностями)
Думать о будущем конечно же полезно, только подозреваю, что к 4000 году мы уже перейдём на новый галактический календарь, а все программы, в том числе астрономические, будут писать роботы, а люди будут заниматься программированием разве что в качестве хобби. О, дивный новый мир!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2017, 13:41
Помогаю со студенческими работами здесь

По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году
2)По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году (от 1до 365 или 366, если год високосный).

По заданным дню и месяцу определить дату предыдущего и следующего дней
Дата некоторого дня определяется двумя натуральными числами m (порядковый номер месяца) и n (число). По заданным n и m определить: (а)...

По дате определить порядковый номер дня в году
По введенной дате (месяц, год, число) определить порядковый номер дня в году

Определить дату следующего дня (задача)
По дате (день:месяц:год) определить и вывести дату следующего дня (учитывать вариант високосного года). Используя switch.

Определить дату по номеру дня и года
Задан год и порядковый номер дня в пределах года. Определите дату


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru