Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2018, 15:26   #1
Gazirovkaa
Новичок
Джуниор
 
Регистрация: 23.03.2018
Сообщений: 3
По умолчанию Определить количество понедельников в году, приходящихся на 13-е число

Определить количество понедельников в году, приходящихся на 13-е число, считая, что год не високосный и 1 января приходится на понедельник.
Gazirovkaa вне форума Ответить с цитированием
Старый 23.03.2018, 16:21   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Определил, а что теперь?
waleri вне форума Ответить с цитированием
Старый 23.03.2018, 16:25   #3
Gazirovkaa
Новичок
Джуниор
 
Регистрация: 23.03.2018
Сообщений: 3
По умолчанию

код написать
Gazirovkaa вне форума Ответить с цитированием
Старый 23.03.2018, 17:55   #4
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Напишите тупо цикл по дням года от 1 до 365 с шагом 7 и проверяйте какое это число вычитая из номера дня число дней в предыдущие месяцы.
СтудПом вне форума Ответить с цитированием
Старый 24.03.2018, 16:27   #5
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Есть же формула для вычисления дней недели.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 26.03.2018, 10:10   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Есть же формула для вычисления дней недели.
она тут не сильно поможет.
потому как.
1) ей нужно передавать в параметрах год, которого нет. (придётся делать цикл по годам и искать любой подходящий год - год не високосный и 1 января приходится на понедельник - но это как-то некрасиво...)

2) чем Вас не устраивает простой как топор алгоритм перебора всех понедельников с проверкой на дата == 13 ?

3) автор хотел, чтобы ему выложили готовый код, а злые ленивые дядьки-программисты его жестоко обманули и готовый код не дали!

p.s. а какую формулу Вы имеете в виду? Может быть, я чего-то не знаю или просто неправильно Вас понял?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2018, 10:29   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от Gazirovkaa Посмотреть сообщение
Определить количество понедельников в году, приходящихся на 13-е число, считая, что год не високосный и 1 января приходится на понедельник.
В самом оптимальном варианте задача превращается в перебор двенадцати тринадцатых чисел, т.е. нужно проверить 12 дней в году.
Для проверки нам нужно знать количество дней в каждом месяце, кроме декабря. Можно тупо заполнить массив числами 31, 28,...
Условие, что 1 января - понедельник значит что для понедельника верно утверждение: день в году % 7 == 1.
Берём январь, 13 число января - это 13-й день в году. Берём 13 % 7 != 1, значит не понедельник, январь не подходит.
Берём февраль, 13 число февраля - это 13 + 31 - 44 день в году. 44 % 7 != 1 - опять не понедельник.
март: 44 + 28 = 72 - не понедельник.
...
год, кстати, можно текущий взять, так что особо искать не нужно его.
pu4koff вне форума Ответить с цитированием
Старый 26.03.2018, 10:36   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

А в следующем году прога уже будет работать неправильно.
Нужен, думаю, массив для перевода числа в день от начала года.
Да, неудобен наш календарь, надо что-то менять...
digitalis вне форума Ответить с цитированием
Старый 26.03.2018, 11:24   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Нужен, думаю, массив для перевода числа в день от начала года.
Цитата:
Сообщение от pu4koff Посмотреть сообщение
В самом оптимальном варианте задача превращается в перебор двенадцати тринадцатых чисел, т.е. нужно проверить 12 дней в году.
Для проверки нам нужно знать количество дней в каждом месяце, кроме декабря. Можно тупо заполнить массив числами 31, 28,...
Условие, что 1 января - понедельник значит что для понедельника верно утверждение: день в году % 7 == 1.
Берём январь, 13 число января - это 13-й день в году. Берём 13 % 7 != 1, значит не понедельник, январь не подходит.
Берём февраль, 13 число февраля - это 13 + 31 - 44 день в году. 44 % 7 != 1 - опять не понедельник.
март: 44 + 28 = 72 - не понедельник.
...
год, кстати, можно текущий взять, так что особо искать не нужно его
мда. столько обсуждений, что код, пожалуй, будет короче, чем дискуссия в теме:

вот цикл "В ЛОБ":
Код:
int main() {
   int day=1, m=0, Mounthes[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, count13=0;
   while (day<=365) {
       if (day==13) count13++;
       day += 7;
       if(day>Mounthes[m])
           day-=Mounthes[m++];
   }
   printf("число понедельников 13-е = %i", count13);}

Последний раз редактировалось Serge_Bliznykov; 26.03.2018 в 11:27.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2018, 12:37   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Serge_Bliznykov, мой алгоритм оптимальнее и я дал человеку удочку, а не рыбу
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура элемента массива «пассажир»: фамилия, номер рейса, багаж - количество вещей, общий вес. Определить число пассажиров, кол Masha Koks Помощь студентам 3 26.11.2013 19:00
В последовательности определить сумму чисел,их количество,максимальное и минимальное число с их порядковыми номерами (QBasic) Лена1308 Помощь студентам 3 14.12.2011 22:20
В последовательности определить сумму чисел,их количество,максимальное и минимальное число с их порядковыми номерами (QBasic) Лена1308 Помощь студентам 0 01.12.2011 21:19
Как подсчитать количество дней недели в году? delphiboy Microsoft Office Excel 6 28.02.2010 04:39
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43