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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2019, 12:47   #11
IronManXiaomi
Пользователь
 
Регистрация: 04.02.2019
Сообщений: 19
По умолчанию

Посыл препода, учесть и ограничить t, а данные все целочисленные. Я, в начале, тоже разложил формулу, как вы, но упустил, как и вы скобки. Без них в результате всегда выдает 0.
IronManXiaomi вне форума Ответить с цитированием
Старый 04.02.2019, 12:48   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Деление на ноль не может быть
При чем здесь это? Я об остатке от деления на 31. У тебя же число нулевое получится )
Цитата:
По условиям задачи не требуется учитывать февраль
А 31 июня или сентября?
Цитата:
упустил, как и вы скобки
Какие, у меня ваще формулы не было )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.02.2019 в 12:51.
Аватар вне форума Ответить с цитированием
Старый 04.02.2019, 13:24   #13
IronManXiaomi
Пользователь
 
Регистрация: 04.02.2019
Сообщений: 19
По умолчанию

Основная формула t = 31*(m-1)+(d-1). Так как t известно и надо найти d, то разлодив формулу получим t = 31*m - 32 + d и соответственно m = (t+32)/31 и d = (t+32)-31*m
IronManXiaomi вне форума Ответить с цитированием
Старый 04.02.2019, 13:30   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Умница. Теперь посчитай дату для t=30
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2019, 13:34   #15
IronManXiaomi
Пользователь
 
Регистрация: 04.02.2019
Сообщений: 19
По умолчанию

Я не программист. Сегодня скачал и установил VS 2013. Задача девушки меня просто заинтересовала. Почитал немного о переменных и их использовании. Программа даёт указания, что нельзя использовать параметры в явном виде. Далее я углубился, так как начал придумывать циклы и условия. Короче, начал использовать double, var и for ��

Цитата:
Сообщение от Аватар Посмотреть сообщение
Умница. Теперь посчитай дату для t=30
да и тоже самое для 185, но задача на час и только с тремя значениями t. И препод для сути может ввести 1000 или 367.

Цитата:
Сообщение от Аватар Посмотреть сообщение
При чем здесь это? Я об остатке от деления на 31. У тебя же число нулевое получится )
Разве при int учитывается остаток?

Чтоб добавить что-то к своему сообщению, используйте кнопку "Правка", а не пишите несколько сообщений подряд.

Последний раз редактировалось Вадим Мошев; 04.02.2019 в 19:23.
IronManXiaomi вне форума Ответить с цитированием
Старый 04.02.2019, 14:05   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

% вместо /
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2019, 14:11   #17
IronManXiaomi
Пользователь
 
Регистрация: 04.02.2019
Сообщений: 19
По умолчанию

Попробуем, вечерком, помучиться и учесть 185, 60 и 30.
IronManXiaomi вне форума Ответить с цитированием
Старый 04.02.2019, 20:27   #18
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Я думаю, что есть смысл решить эту задачу при помощи матаппарата Диофантовых уравнений.
После получения общего решения (параметрической формулы) ограничить параметр значениями, оставляющими d и m в корректных диапазонах и добавить ограничения на число дней в конкретном месяце.
FPaul вне форума Ответить с цитированием
Старый 04.02.2019, 21:45   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
при помощи матаппарата Диофантовых уравнений
так то оно так, хотя можно вообще при этом не знать что это такое. Уже почти все и сделано:
Код:
m = (t+32)/31;
d=(t+32)-31*m;
осталось превратить в код
Код:
Если d=0 тогда из m вычесть 1, а d присвоить 31
Ну и нет решения если m<1 или m>12 или (d=31 и m=2,4,6,9,11) или (d=30 и m=2)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2019, 23:53   #20
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Да, действительно. Множитель при m подобран так, что однозначно определяет значение m. Дальше - d, и проверка корректности.

Не сразу придал значение этому факту.
Получается, решение данной задачи в общем виде как Диофантова уравнения избыточно. И по корректности близко к перебору.

Как-то
Код:
Если d=0 тогда из m вычесть 1, а d присвоить 31
наводит на воспоминания о трюке с вычитанием 1 из делимого при вычислении m. Но к этой оптимизации ещё прийти нужно после решения основной задачи.
FPaul вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральное число n .Вычислите выражение max(|z1|...|zn|) Kate18 Паскаль, Turbo Pascal, PascalABC.NET 10 18.04.2016 11:52
Дано натуральное число n.Вычислите a(a+1)...(a+n-1). (на C) Konsyello Помощь студентам 1 14.10.2013 15:37
Дано трехзначное число. Если в сумме его цифр присутствует число 7,то число записать в зеркальном виде ( Паскаль ) Эля777 Помощь студентам 5 22.04.2013 23:23