Понедельник, 16 Мая 2022, 14:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » Кол-во пятниц 13[C++]
Кол-во пятниц 13[C++]
WhoAmIДата: Воскресенье, 05 Октября 2014, 23:57 | Сообщение # 1
Сумасшедший программист
Сейчас нет на сайте
Программа получает на вход два натуральных числа. Первое - кол-во месяцев в календаре, второе - номер дня недели на который приходится первое число первого месяца года (может принимать от 1 до 7).

Программа должна подсчитать кол-во пятниц 13 в году.


Struggle #Gamiron12
falcowareДата: Понедельник, 06 Октября 2014, 00:05 | Сообщение # 2
старожил
Сейчас нет на сайте
WhoAmI, что значит количество месяцев в календаре? Их ведь всегда 12? Или я чего то не понял?
LertmindДата: Понедельник, 06 Октября 2014, 00:27 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
WhoAmI, что значит количество месяцев в календаре? Их ведь всегда 12? Или я чего то не понял?

Пятниц 13 в году обычно от 1 до 3.
falcowareДата: Понедельник, 06 Октября 2014, 00:54 | Сообщение # 4
старожил
Сейчас нет на сайте
Lertmind, поставьте задачу нормально. Непонятно зачем 12 всегда вводить в начале. Это избыточная информация.
LertmindДата: Понедельник, 06 Октября 2014, 01:02 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Если тебе надо ввести количество месяцев от 1 до 12, и год невисокосный, то вот.
Код
#include <iostream>
using namespace std;

int main()
{
       const int daysInMonths[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
       int monthCount = 0;
       int firstDay = 0;
       cout << "Input: ";
       cin >> monthCount >> firstDay;

       if (monthCount > 12)
           monthCount = 12;
       if (firstDay < 1)
           firstDay = 1;
       else if (firstDay > 7)
           firstDay = 7;

       firstDay--; // Теперь от 0 до 6
       int friday13Count = 0;
       for (int month = 0; month < monthCount; month++) {
           // Если воскресенье начало месяца, то будет пятница 13
           if (firstDay == 6) {
               friday13Count++;
           }
           firstDay = (firstDay + daysInMonths[month]) % 7;
       }
       cout << "Friday 13: " << friday13Count << endl;

       return 0;
}


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 01:05
falcowareДата: Понедельник, 06 Октября 2014, 01:19 | Сообщение # 6
старожил
Сейчас нет на сайте
Lertmind, задача решена не полностью. Не работает для високосных лет.

Тут нужен универсальный метод.
LertmindДата: Понедельник, 06 Октября 2014, 01:32 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
Не работает для високосных лет.
Я так и написал.
Цитата falcoware ()
Тут нужен универсальный метод.
По входным данным из условия задачи нельзя определить какой год. Если надо, то дописать для високосных не составит труда.
falcowareДата: Понедельник, 06 Октября 2014, 01:44 | Сообщение # 8
старожил
Сейчас нет на сайте
Lertmind, боюсь по числу номера недели первого месяца года можно вычислить какой это год високосный или нет и уже дополнить программу.
Уловил? cool
LertmindДата: Понедельник, 06 Октября 2014, 01:52 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
falcoware, контрпример: 2012 год, Воскресенье, Високосный и 2017 год, Воскресенье, Невисокосный. Уловил?

Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 01:54
falcowareДата: Понедельник, 06 Октября 2014, 01:54 | Сообщение # 10
старожил
Сейчас нет на сайте
falcoware, путем простых заключний приходим что числа 1,4,7 високосные года. Уловил?
LertmindДата: Понедельник, 06 Октября 2014, 01:56 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
falcoware, путем простых заключний приходим что числа 1,4,7 високосные года. Уловил?

Ещё раз прочитай, что я написал, 7 - это воскресенье, там и там 7, но один-то невисокосный.


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 01:56
falcowareДата: Понедельник, 06 Октября 2014, 02:04 | Сообщение # 12
старожил
Сейчас нет на сайте
Lertmind, давай тогда напишем функцию определения високосного года:
1. Допустим 1 первый год. Известно, что Христос родился в Воскресенье.
2. 2000 лет. Каждый простой год смещается на 3, високосный на 4.
3. То есть имеем ряд 1, 4, 7, 1, 4, 7 (была моя логика). Однако. Високосные года ввелись когда?

Вот такая тебе задачка перед сном =)
LertmindДата: Понедельник, 06 Октября 2014, 02:05 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Я думаю, что WhoAmI, ошибся в "Первое - кол-во месяцев в календаре", а количество дней в году или типа того, чтобы определить високосность года.
falcowareДата: Понедельник, 06 Октября 2014, 02:10 | Сообщение # 14
старожил
Сейчас нет на сайте
Lertmind, слабак =)
LertmindДата: Понедельник, 06 Октября 2014, 02:18 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Ещё раз, falcoware:
1. У нас Григорианский календарь. Распределение високосных годов:
* год, номер которого кратен 400 — високосный;
* остальные годы — год, номер которого кратен 100 — невисокосный;
* остальные годы — год, номер которого кратен 4 — високосный.
2. Программа получает на вход (кроме бесполезных количества месяцев) с чего начинается год 1-7.
3. Я ввожу 7 для 2012 года и ввожу 7 для 2017 года, но ты никак не определишь какой год я ввёл.


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 02:19
falcowareДата: Понедельник, 06 Октября 2014, 02:23 | Сообщение # 16
старожил
Сейчас нет на сайте
Ты видать не силен в математике.

Нам нужен ряд. Типа числа Фибоначи. Уловил?
LertmindДата: Понедельник, 06 Октября 2014, 02:26 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
falcoware, ты наверно не силён в логике. Тут даже не нужна математика, нельзя по одному числу определить какой год.

Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 02:27
falcowareДата: Понедельник, 06 Октября 2014, 02:29 | Сообщение # 18
старожил
Сейчас нет на сайте
falcoware, да кстати колчиество месяцев в календаре может варьироваться от 12 до 14. Вот от этого тоже надо плясать!

Добавлено (06.10.2014, 02:27)
---------------------------------------------
falcoware, вернее 13 и 14.

Добавлено (06.10.2014, 02:29)
---------------------------------------------
falcoware, если месяце 14 то год должен быть високосным одназначно. Все, решили задачу! Аллилуйя!

LertmindДата: Понедельник, 06 Октября 2014, 02:32 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
да кстати колчиество месяцев в календаре может варьироваться от 12 до 14. Вот от этого тоже надо плясать!

Прекрати. "Согласно григорианскому календарю, год делится на 12 месяцев, продолжительностью от 28 до 31 дня".

Добавлено (06.10.2014, 02:32)
---------------------------------------------
Ладно, falcoware, я больше не буду спорить, я уже понял что ты живёшь по другому календарю, который я не знаю.

falcowareДата: Понедельник, 06 Октября 2014, 02:39 | Сообщение # 20
старожил
Сейчас нет на сайте
Lertmind, нет ты не понял. Начинаться календарь может с предыдущего месяца. И кончаться так же.
А если Каледарь начинается с 1 есть 1 и 13 это невисокосный год. Как-то так.

Добавлено (06.10.2014, 02:39)
---------------------------------------------
falcoware, вот смотри твой 17 ый 13 месяцев. Високосный. Остюда я делаю гипотезу, чтто если в календаре 13 месяцев, а не 14, значит год високосный!

Форум игроделов » Программирование » C/C++ » Кол-во пятниц 13[C++]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг