С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 13

Машина времени

18.10.2020, 16:58. Показов 1417. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте! Начал изучать Паскаль, не могу решить данную ниже задачу. Помогите кто-то с кодом:


Учёный изобрёл машину времени. Он переместился в d1 (день года) m1 (месяц года) какого-то года. Оказалось, что это w1 (номер дня недели).
Сейчас учёный планирует отправиться в d2 (день года) m2 (месяц года). Нужно найти какой это w2 (номер дня недели). (год невисокосный, то есть количество дней в месяцах идёт как 31 28 31 30 31 30 31 31 30 31 30 31)

В первую строку вносятся числа d1 m1 w1 (число/месяц/номер дня недели первой даты), во вторую d2 m2 (число/месяц второй даты).
В ответе выводится w2 (номер дня недели 2 даты).

Например, учёный отправился в 4 день недели (четверг) 26.08, а затем в 13.09 (что оказалось 1 днём недели, понедельником).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2020, 16:58
Ответы с готовыми решениями:

Написать программу,вычисляющую время,прошедшее от времени Т1 до времени Т2,считая Т2>Т1.
Написать программу,вычисляющую время,прошедшее от времени Т1 до времени Т2,считая Т2>Т1. если кому не сложно, напишите плиз!!! ...

Подсчет времени занятия (по заданному времени начала и окончания)
В первой строке написано три целых числа A, B, C (0 ≤ A ≤ 23, 0 ≤ B ≤ 59, 0 ≤ C ≤ 59) - время начала занятия в часах, минутах и секундах. ...

По номеру времени выдать название этого времени года
Напишите программу, которая по номеру времени (целому чслу от 1 до 4) выдает в качестве результата названия этого времени года. В случаи...

5
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
19.10.2020, 07:48
Рассмотрим ваш пример:

26 8 4
13 9

Из него видно, что 9>8.
Т.е. вторая дата больше первой. Значит для получения второй даты нужно просто увеличивать счётчик дат и по ходу вносить соответствующие корректировки, пока не получим нужную дату:

d=26   m=8   w=4
d+1=27   m=8   w+1=5
d+1=28   m=8   w+1=6
d+1=29   m=8   w+1=7
d+1=30   m=8   w+1=8

Первая корректировка: w стало больше, чем количество дней в неделе. Нужно подкорректировать это значение.

корректировка   w>7   →   w-7=1
т.е. теперь   d=30   m=8   w=1

d+1=31   m=8   w+1=2
d+1=32   m=8   w+1=3

Вторая корректировка: d стало больше чем количество дней в месяце m. Значит нужно подкорректировать d и m.

корректировка   d>days[m]   →   d=1   m+1=9
т.е. теперь   d=1   m=9   w=3

d+1=2   m=9   w+1=4
d+1=3   m=9   w+1=5
d+1=4   m=9   w+1=6
d+1=5   m=9   w+1=7
d+1=6   m=9   w+1=8

Третья корректировка: снова w превысило допустимое.

корректировка   w>7   →   w-7=1
т.е. теперь   d=6   m=9   w=1

d+1=7   m=9   w+1=2
d+1=8   m=9   w+1=3
d+1=9   m=9   w+1=4
d+1=10   m=9   w+1=5
d+1=11   m=9   w+1=6
d+1=12   m=9   w+1=7
d+1=13   m=9   w+1=8

Опять корректировка: в очередной раз w превысило допустимое.

корректировка   w>7   →   w-7=1
т.е. теперь   d=13   m=9   w=1

Ура! Конец цикла. Мы достигли условия   d=13   и   m=9.
При этом у нас получилось   w=1.

Вот и всё!
Теперь осталось только записать это в коде…
1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
19.10.2020, 12:01
Лучший ответ Сообщение было отмечено redhead_fox как решение

Решение

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
const DaysInMonth : array[1..12] of integer =
   (31,28,31,30,31,30,31,31,30,31,30,31);
 
var d1,m1,w1, d2, m2, t, diff : integer;
begin
  ReadLn(d1,m1,w1);
  ReadLn(d2,m2);
  if (d1=d2) and (m1=m2)  then WriteLn(w1)
  else begin
     if (m1>m2) or ( (m1=m2) and (d1>d2)) then begin 
        {если первая дата больше, меняем даты местами}
        t:=m1; m1:=m2; m2:=t; t:=d1; d1:=d2; d2:=t;
        t:=-1;
     end
     else
        t:=1;
 
     diff := 0;
     repeat
       inc(diff);
       inc(d1);
       if d1>DaysInMonth[m1] then begin d1:=1; Inc(m1); end;
     until (d1=d2) and (m1=m2);
 
     WriteLn(((w1-1)+54*7 + diff*t) mod 7 + 1 );
  end;
end.
1
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 13
22.10.2020, 20:30  [ТС]
Подробно разобрал код — выглядит вроде логично и правильно, но при выполнении выдаёт ошибку

D.pas(22) : Ошибка времени выполнения: Индекс находился вне границ массива.

Ошибка появляется при вводе d2>12 (при любых значения d1,m1,w1,m2)
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
23.10.2020, 10:23
Цитата Сообщение от redhead_fox Посмотреть сообщение
D.pas(22) : Ошибка времени выполнения: Индекс находился вне границ массива.
Ошибка появляется при вводе d2>12 (при любых значения d1,m1,w1,m2)
ты точно вводишь сначала день, потом месяц?!
потому что у меня всё работает:
Изображения
 
1
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 13
23.10.2020, 19:07  [ТС]
Хм, странно
Вчера вводил тот же код, несколько раз перепроверил — выдавало ошибку. Попробовал сейчас — всё работает, хотя я практически ничего не менял.

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

Машина времени
Хочу задать вам два вопроса про машину времени. 1 Если бы у вас была машина времени и вы могли изменить одно события в прошлом что бы...

Машина времени
Хочу построить машину времени, но даже не пойму с чего начать :). Как вообще делаются у физиков проекты, которые не понятно как делать. С...

Машина времени
Однажды вечером в 1994 году один путешественник во времени нажал на кнопку на своей машине времени. Секунды спустя ее цифровой дисплей...

TCP/IP и машина времени
Доброго времени суток. Столкнулся с проблемой стека TCP/IP. Может для кого-то эта покажется не проблемой, а изобретением машины времени и...

Джон Титор|Машина времени
Здравствуйте. Я решил создать тему о машине времени,потому что нет с кем это обсудить.Я недавно заинтересовался машиной времени,и решил...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru