Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/57: Рейтинг темы: голосов - 57, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 2

Вычислить количество пятниц, приходящихся на 13-е числа 21 века

28.10.2013, 03:16. Показов 10909. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Поставлено следующее условие: вычислить количество пятниц, приходящихся на 13-е числа 21 века.
Как это программно реализовать?
Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2013, 03:16
Ответы с готовыми решениями:

Определить количество понедельников в году, приходящихся на 13-е числа
type число=1..31 месяц=(янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек); деньнедели=(вс,пн,вт,ср,чт,пт,сб); var...

Вычислить количество пятниц, приходящихся на 13-е числа столетия с номером n
Вычислить количество пятниц, приходящихся на 13-е числа столетия с номером n , где n - заданное натуральное число. Прошу написать...

Вычислить количество пятниц, приходящихся на 13-е число
. Вычислить количество пятниц, приходящихся на 13-е Числа столетия с номером n, где n -данное натуральное число.

5
Модератор
10442 / 5734 / 3406
Регистрация: 17.08.2012
Сообщений: 17,442
28.10.2013, 05:04
Ну... В общем, просто, если подумать...
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
program Friday13;
 
//первая "пятница 13" в 21 веке: 13.04.2001, от неё и пляшем
 
//число дней в следующем месяце
const pp: array [1..12] of byte = (28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31);
 
var m, y, n, k: integer;
 
begin
  n := 0; //счётчик дней
  k := 0; //пока нет пятниц 13
  m := 4; //начинаем от 04 месяца 2001 года
  for y := 2001 to 3000 do
    begin
      while m <= 12 do
        begin
          n := n mod 7;
          if n = 0 then k := k + 1; //если счётчик дней делится нацело на 7, то это одна из пятниц 13
          n := n + pp[m]; //прибавляем к счётчику число дней в следующем месяце
          if (m = 1) and (y mod 4 = 0) then n := n + 1; //если следующий месяц февраль и год високосный, добавляем ещё один день
          m := m + 1 //следующий месяц
        end;
      m := 1 //январь следующего года
    end;
  writeln('Count of "Friday 13" in 2001..3000: ', k);
  readln
end.
0
 Аватар для Dj Programmer
14 / 14 / 14
Регистрация: 05.10.2013
Сообщений: 141
28.10.2013, 09:21
Не думаю , что программа правильно написана , результат ( k) = 1715. Даже если каждый месяц с 2001 по 3000 год будет пятница 13-е , то это 1200 пятниц , откуда 1715 ?
0
Модератор
10442 / 5734 / 3406
Регистрация: 17.08.2012
Сообщений: 17,442
30.10.2013, 22:39
Dj Programmer, частично Вы правы. В программе есть две несущественные ошибки, я бы даже сказал, неточности, с вычислением следующего 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
program Friday13;
 
//первая "пятница 13" в 21 веке: 13.04.2001, от неё и пляшем
 
//число дней в текущем месяце
const pp: array [1..12] of byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
 
var m, y, n, k: integer;
 
begin
  n := 0; //счётчик дней
  k := 0; //пока нет пятниц 13
  m := 4; //начинаем от 04 месяца 2001 года
  for y := 2001 to 3000 do //цикл по годам
    begin
      while m <= 12 do //цикл по месяцам
        begin
          n := n mod 7;
          if n = 0 then k := k + 1; //если счётчик дней делится нацело на 7, то это одна из пятниц 13
          n := n + pp[m]; //прибавляем к счётчику число дней в текущем месяце
          if (m = 2) and (y mod 4 = 0) then n := n + 1; //если текущий месяц февраль и год високосный, добавляем ещё один день
          m := m + 1 //следующий месяц
        end;
      m := 1 //январь следующего года
    end;
  writeln('Count of "Friday 13" in 2001..3000: ', k);
  readln
end.
Цитата Сообщение от Dj Programmer Посмотреть сообщение
Даже если каждый месяц с 2001 по 3000 год будет пятница 13-е , то это 1200 пятниц
Dj Programmer, этого никак не может этого быть. 12 * (3000 - 2001) = 11988.

Добавлено через 23 часа 31 минуту
Dj Programmer, я неумышленно ввёл Вас в заблуждение. 21 век кончается в 2100 году, а не в трёхтысячном. Это я что-то по невнимательности на тысячелетие замахнулся. Правильно будет
Pascal
1
for y := 2001 to 2100 do

Не по теме:

А ведь как я был уветен в себе!
Бу дет что вспом нить на свал ке...

2
1 / 1 / 0
Регистрация: 05.12.2015
Сообщений: 10
05.12.2015, 18:29
Cyborg Drone, Спасибо огромное за код! Не могли бы вы пояснить, пожалуйста, почему деление на 7 без остатка определяет именно пятницу 13? Код абсолютно верный, сверил с календарём.
0
Модератор
10442 / 5734 / 3406
Регистрация: 17.08.2012
Сообщений: 17,442
05.12.2015, 19:37
Потому что отсчёт в данной программе идёт от одной из пятниц 13-е, а именно: 13.04.2001. И считаем дни по модулю 7. Для 13.04.2001 счётчик дней по модулю 7 принимаем равным 0 (переменная n). Дни недели в программе нумеруются от 0 до 6: пятница, суббота, воскресенье, понедельник, вторник, среда и четверг соответственно.

Основной цикл:
1) Выясняем день недели: остаток от деления счётчика дней на 7. Если получается 0, то это - пятница 13.
2) Затем к полученному остатку прибавляется количество дней в текущем месяце, тем самым получаем количество дней до 13 числа следующего месяца плюс номер дня недели текущего месяца.
Повторяем до нужной даты.

Пояснение к пункту 2). Даже не пояснение, а так... Повторение. Складывая номер дня недели текущего месяца с количеством дней текущего месяца и выбрасывая целое количество семёрок из этого числа, получаем номер дня недели следующего месяца. Так же, как и при ручном подсчёте. К примеру, в текущем месяце 30 дней, и текущий день 13 числа этого месяца - понедельник (3). Считаем семёрками, что за день недели будет через 30 дней, то есть, 13 числа следующего месяца. Через 7+7+7 дней будет всё тот же понедельник, а ещё через 2 дня - среда (3+2=5). В программе считается точно так же, только без лишнего разжёвывания:
- Текущее 13 число - понедельник (3). Плюс 30 дней = 33.
- Выкидывается максимальное целое количество семёрок, чтобы остаток был меньше 7 (это и есть mod 7). 33 mod 7 = 5, значит, следующее 13 число - среда.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2015, 19:37
Помогаю со студенческими работами здесь

Определить количество пятниц в году, приходящихся на 13-е число
21. type число = 1..31; месяц = (янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек); деньнедели = (вс,пн,вт,ср,чт,пт,сб); var d:...

Найти количество пятниц с 1 января 2001 по 31 декабря 2010. И найти количество пятниц, 13
Если кто знает как решить помогите

Вычислить количество пятниц приходящих на 13 число заданного столетия
вычислить количество пятниц приходящих на 13 число заданного столетия реализовать программу надо на С# надо делать через циклы...

Сколько пятниц и пятниц 13 в период с 1 января 2001 по 31 декабря 2020 ( включительно) ?
Я решил эту задачу, но не уверен в правильности кода. Не могли бы вы мне помочь ее проверить. Если нужны пояснения, то спрашивайте!) ...

Определить количество вторников в году, приходящихся на 13-е число
Объявлены типы и переменные : TYPE ЧИСЛО = 1 .. 31; МЕСЯЦ= (ЯНВ, ФЕВ, МАР, АПР, МАЙ, ИЮН, ИЮЛ, АВГ, СЕН, ОКТ, НОЯ, ДЕК)...


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

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