Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 53

Определить дату следующего (предыдущего) дня

09.02.2012, 21:07. Показов 3635. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, определяющую:
-дату следующего(предыдущего) дня
-дату которая наступит через m дней
- дату которая была за m дней до сегоднящнего дня
- колличество суток прошедшчх от даты t1 до t2.
 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2012, 21:07
Ответы с готовыми решениями:

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

Получить номер дня и месяца и определить дату следующего дня (считая, что год невисокосный)
Всем привет! Буду очень благодарен если поможете составить программу в PascalABC. Условие звучит так: Напишите программу, которая получает...

Определить дату предыдущего дня
Помогите с задачкой а то тут много написано путаницы много.буду блогодарен. №223 Дата некоторого дня характеризуется двумя...

16
71 / 71 / 72
Регистрация: 18.01.2012
Сообщений: 132
11.02.2012, 23:13
не знаю только как сделать последний вопрос
Pascal
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
uses utils,crt;
var
    dt:DateTime;
    dy,mth,yr:longint;
    m:longint;
const      month: array [1..12] of longint =(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
     clrscr;
     writeln('Текущая дата и время');
     dt:=CurrentDateTime;{связь со временем}
     dy:=dt.year;
     mth:=dt.month;
     yr:=dt.day;
     writeln(dy,'.',mth,' ',yr);{вывод}
     dy:=dy+1;{следующий день}
     writeln('следующий');
     if(month[mth]<dy) then{в случае переполнения}
     begin
          writeln(1,'.',mth+1,'.',yr);
     end
     else writeln(dy,'.',mth,'.',yr);
     dy:=dy-2;{предыдущий}
     writeln('вчера');
     if(dy=0) then
     begin
          writeln(month[mth-1],'.',mth-1,'.',yr);
     end
     else writeln(dy,'.',mth,'.',yr);
     dy:=dy+1;{текущий день}
     writeln('на сколько дней отмотать?');
     read(m);{будем вычитать по 1}
     while(m>0) do
     begin
          dy:=dy-1;{отняли}
          if(dy=0) then{провериди, если нужно поменяли и уменьшили}
          begin
               dy:=month[mth-1];
               mth:=mth-1;
          end;
          m:=m-1;
     end;
     writeln(dy,'.',mth,'.',yr);{вывод}
end.
0
Вирусоборец
 Аватар для thyrex
14447 / 7488 / 1580
Регистрация: 06.09.2009
Сообщений: 27,132
11.02.2012, 23:24
Г.Р., как давно в феврале по дефолту 29 дней?
0
71 / 71 / 72
Регистрация: 18.01.2012
Сообщений: 132
11.02.2012, 23:54
на этот год, так, иначе проверка на год нужна и так как константа, то проверка увеличит код программы
0
Вирусоборец
 Аватар для thyrex
14447 / 7488 / 1580
Регистрация: 06.09.2009
Сообщений: 27,132
12.02.2012, 01:23
Цитата Сообщение от Г.Р. Посмотреть сообщение
иначе проверка на год нужна
Так она в любом случае нужна
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
12.02.2012, 01:47
Pascal
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
var d,m,g:integer;
    b:boolean;
begin
write('Введите день ');
readln(d);
write('Введите месяц ');
readln(m);
write('Введите год ');
readln(g);
b:=true;
case m of
 1,3,5,7,8,10,12: if d<31 then d:=d+1 else
                   if d=31 then
                    begin
                    d:=1;
                    if m<12 then m:=m+1 else
                     begin
                     m:=1;
                     d:=d+1;
                     end;
                    end
                   else b:=false;
 4,6,9,11: if d<30 then d:=d+1 else
            if d=30 then
             begin
             d:=1;
             m:=m+1;
             end
            else b:=false;
 2:if g div 4=0 then
    if d<29 then d:=d+1 else
     if d=29 then
      begin
      d:=1;
      m:=m+1;
      end
     else b:=false
   else
    if d<28 then d:=d+1 else
     if d=28 then
      begin
      d:=1;
      m:=m+1;
      end
     else b:=false;
 else b:=false;
end;
if b then writeln('Следующий день ',d,'.',m,'.',g)
else writeln('Неверно введена дата');
end.
это программа следующего дня, остальное можетбыть завтра напишу
0
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 53
12.02.2012, 09:37  [ТС]
спасибо большое
0
Вирусоборец
 Аватар для thyrex
14447 / 7488 / 1580
Регистрация: 06.09.2009
Сообщений: 27,132
12.02.2012, 11:21
Цитата Сообщение от gecheim Посмотреть сообщение
if g div 4=0
Если это проверка на високосный год, то это неверно
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
12.02.2012, 17:26
Цитата Сообщение от thyrex Посмотреть сообщение
Если это проверка на високосный год, то это неверно
да блин перепутал
не div, а mod
0
Вирусоборец
 Аватар для thyrex
14447 / 7488 / 1580
Регистрация: 06.09.2009
Сообщений: 27,132
12.02.2012, 19:30
Цитата Сообщение от gecheim Посмотреть сообщение
да блин перепутал
не div, а mod
Даже с учетом поправки это неверно
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
12.02.2012, 19:34
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

нашел в первом коде еще одну ошибку
вот правильный
Pascal
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
var d,m,g:integer;
    b:boolean;
begin
write('Введите день ');
readln(d);
write('Введите месяц ');
readln(m);
write('Введите год ');
readln(g);
b:=true;
case m of
 1,3,5,7,8,10,12: if d<31 then d:=d+1 else
                   if d=31 then
                    begin
                    d:=1;
                    if m<12 then m:=m+1 else
                     begin
                     m:=1;
                     g:=g+1;
                     end;
                    end
                   else b:=false;
 4,6,9,11: if d<30 then d:=d+1 else
            if d=30 then
             begin
             d:=1;
             m:=m+1;
             end
            else b:=false;
 2:if g mod 4=0 then
    if d<29 then d:=d+1 else
     if d=29 then
      begin
      d:=1;
      m:=m+1;
      end
     else b:=false
   else
    if d<28 then d:=d+1 else
     if d=28 then
      begin
      d:=1;
      m:=m+1;
      end
     else b:=false;
 else b:=false;
end;
if b then writeln('Следующий день ',d,'.',m,'.',g)
else writeln('Неверно введена дата');
end.
это вторая
Pascal
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
var d,m,g,i,k:integer;
    b:boolean;
begin
write('Введите день ');
readln(d);
write('Введите месяц ');
readln(m);
write('Введите год ');
readln(g);
write('Введите число дней ');
readln(k);
b:=true;
i:=1;
repeat
 case m of
  1,3,5,7,8,10,12: if d<31 then d:=d+1 else
                    if d=31 then
                     begin
                     d:=1;
                     if m<12 then m:=m+1 else
                      begin
                      m:=1;
                      g:=g+1;
                      end;
                     end
                    else b:=false;
  4,6,9,11: if d<30 then d:=d+1 else
             if d=30 then
              begin
              d:=1;
              m:=m+1;
              end
             else b:=false;
  2:if g mod 4=0 then
     if d<29 then d:=d+1 else
      if d=29 then
       begin
       d:=1;
       m:=m+1;
       end
      else b:=false
    else
     if d<28 then d:=d+1 else
      if d=28 then
       begin
       d:=1;
       m:=m+1;
       end
      else b:=false;
  else b:=false;
 end;
 i:=i+1;
until(not b)or(i=k);
if b then writeln('Через ',k,' дней будет ',d,'.',m,'.',g)
else writeln('Неверно введена дата');
end.
0
Вирусоборец
 Аватар для thyrex
14447 / 7488 / 1580
Регистрация: 06.09.2009
Сообщений: 27,132
12.02.2012, 19:52
gecheim,
год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо кратен 100 и не кратен 400.
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
12.02.2012, 20:26
в предыдущие задания вставишь остальные условия проверки года, в этой я их прописал
Pascal
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
var d,m,g,i,k:integer;
    b:boolean;
begin
write('Введите день ');
readln(d);
write('Введите месяц ');
readln(m);
write('Введите год ');
readln(g);
write('Введите число дней ');
readln(k);
b:=true;
i:=0;
repeat
 case m of
  1,3,5,7,8,10,12: if(d>31)or(d<1)then b:=false else
                    if d=1 then
                     if m>1 then
                      begin
                      m:=m-1;
                      if m<>3 then d:=30 else
                       if(g mod 4=0)and((g mod 100<>0)or(g mod 400=0))then d:=29
                       else d:=28;
                      end
                     else
                      begin
                      d:=31;
                      m:=12;
                      g:=g-1;
                      end
                    else d:=d-1;
  4,6,9,11: if(d>30)or(d<1)then b:=false else
             if d=1 then
              begin
              d:=31;
              m:=m-1;
              end
             else d:=d+1;
  2:if(g mod 4=0)and((g mod 100<>0)or(g mod 400=0))then
     if(d>29)or(d<1)then b:=false else
       if d=1 then
        begin
        d:=31;
        m:=m-1;
        end
       else d:=d-1
    else
     if(d>28)or(d<1) then b:=false else
      if d=1 then
       begin
       d:=31;
       m:=m-1;
       end
      else d:=d-1;
  else b:=false;
 end;
 i:=i+1;
until(not b)or(i=k);
if b then writeln(k,' дней назад было ',d,'.',m,'.',g)
else writeln('Неверно введена дата');
end.
0
71 / 71 / 72
Регистрация: 18.01.2012
Сообщений: 132
12.02.2012, 22:04
вроде условие на високосный год, что он делиться на 4 и не делиться на 400
Pascal
1
   if(g mod 4=0)and(g mod 400<>0)
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
12.02.2012, 23:05
Цитата Сообщение от Г.Р. Посмотреть сообщение
вроде условие на високосный год, что он делиться на 4 и не делиться на 400
Pascal
1
   if(g mod 4=0)and(g mod 400<>0)
внимательнее будь
год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400.
0
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 9
13.01.2016, 17:45
для чего здесь нужно k?

Добавлено через 13 минут
gecheim, для чего здесь нужно k? в программе предыдущего дня
0
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
04.04.2017, 00:29
Цитата Сообщение от katerina1711 Посмотреть сообщение
для чего здесь нужно k?
определяет на сколько дней изменяется дата
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2017, 00:29
Помогаю со студенческими работами здесь

Определить дату следующего дня
Определить дату следующего дня

Определить дату следующего дня
Задачка из сборника Златопольского: Дата некоторого дня определяется тремя натуральными числами: g (год), m (номер месяца) и d (число). По...

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

Определить дату следующего дня + квартал (с использованием перечисляемого типа)
Помогите пожалуйста, все выводит, кроме кварталов, вот код: var d,m,g,k:integer; b:boolean; begin write('Введите день '); ...

Написать алгоритм, по которому можно вычислить дату следующего дня
Написать алгоритм, по которому можно вычислить дату следующего дня. Указание: известно, что дата состоит из дня, месяца и года,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
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