Кол-во пятниц 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, боюсь по числу номера недели первого месяца года можно вычислить какой это год високосный или нет и уже дополнить программу. Уловил?
|
|
| |
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, значит год високосный!
|
|
| |