Математическая задача
Суть вот в чем.с клавиатуры вводится путь S, скорость на такси -V1,скорость пешком V2.так же вводится обшее время пути t и стоимость р1-рублей за километр на такси.необходимо расчитать как выгоднее преодолеть путь,чтобы получились минимальные затраты.если двигаться пешком то затрат нет,оплачивается только поездка на такси.язык может быть си или паскаль,но не делфи.
|
Цитата:
В чём возникли проблемы при решении задачи? в математике или в кодировании? что сделано самостоятельно? |
pirojok750, говорю полностью от своего имени.
Данная задача может быть предложена на первом(втором "условия и циклы") лаб. занятии по программированию. Где в первую очередь необходимо написать мат. модель, а затем ее запрограммировать. Полностью решать от и до, я не буду. В лучшем случае, задам наводящий вопрос. Заодно прошу всех, далее отвечающих, не расписывать решение задачи полностью. А лишь задавать вопросы, без вариантов ответа. У меня самого группа в 20 студентов. :) pirojok750, пишите, рассуждайте в слух, задавайтесь числами, решайте на примерах, потом выводите общий случай. |
pirojok750, Задачка не трудная, нужно её разбаить на ряд отдельных подзадач:
1. Решение чисто математическое, с учётом формул. 2. Составление псевдокода. (обычный текст, но понятный где, как и откуда что вычислять.) 3. Перевод псевдокода в нужный язык программирования. Например часть псевдокода: Цитата:
Ввод данных: Предлагаем пользователю ввести их и сохраняем считаные значения в переменные. Расчёт: Условия\Формулы вычисления Прикольная постановка задачи: Цитата:
|
Цитата:
|
Уважаемые форумчане.как сказал lxa85, за меня все решать не надо,ее и вправду проходят по программированию.вопрос вот в чем.я вывел зависимость что S=V1*t1+V2*t2 и общее время пути будет определятся по формуле Tобщее=t1+t2.
Вводимыми переменными являются:длина всего пути-S, скорость движения такси-V1, скорость движения пешехода- V2, общее время веделенное на прохождение всего пути T, стоимость проезда на такси рублей за километр- р1.необходимо преодолеть весь путь S за выделенное время чтобы затраты на дорогу были минимальны. |
Цитата:
Итак, переменные (C++): Код:
... T = S * V1 + S * V2; |
Drongo, простите,вы видать меня не правильно поняли.как вы скорость умножаете на пройденый путь?что получится то?
Разъясняю еще раз суть задачи.Задается путь S и время за которое этот путь должен быть преодолен.у путника 2 варианта-это такси со скоростью V1 и пешком со скоростью v2. если он двигается на такси то платит р1 руб/км или пешком бесплатно.нужно расчитать как ему выгоднее преодолеть весь путь S с минимальными затратами на такси,успев во время T. Путник может двигаться на такси и пешком если ему позволяет время |
Цитата:
|
Цитата:
pirojok750, Цитата:
Двигаться пешком, если позволяет время. Надо проехать столько, чтобы потом сравнять текущее время, с выделенным, пройдя оставшийся кусок дороги. В математике условия пишутся через фигурную скобку. Пример - раскрытие знака модуля. Рассуждаем дальше :) |
математически решить вроде получается.а вот пока закодировать не очень.буду пробовать сегодня.при помощи 2х формул возможно ведь решение S=V1*t1+V2*t2 Tобщее=t1+t2.??
lxa85, решить систему из 2 уравнений я могу. для примера я брал такие значения s=1000, v1=100, v2=10, T=15 1000=100*t1+10*t2 (S=t1*v1+t2*v2) 15=t1+t2( Tобщее=t1+t2) t2=T-t1 1000=100*t1+10*15-10t1 1000=90t1+150 850=90t1 t1=9.4444 t2=15-9.4444 t1=5.5556 |
Цитата:
S = v1t1 + v2t2; t2 = T - t1; S = v1t1 + v2T - v2t1; t1=?. Дальше задача "распадается", писать не интересно. Операторы С++ читать читаю, писать, не пишу. Поэтому пишу Pascal версию. Код:
var |
lxa85, дальше путь пройденый на такси умножается на р1.
t1:=?; // номер формулы в описании; t1 изначально неизвестен.есть только обшее время T |
правильно ли я понимаю постановку задачи?
Код:
T1 + T2 = T Код:
c1*T1 -> min |
Цитата:
Меня интересует формула получения t1. из предыдущей. S= ... Поэтому я и не стал писать ее, предоставив эту возможность тебе. Цитата:
pva, ИМХО сначала пусть работает "топорно", затем уже вводить ограничения на отрицательную скорость, отношения скоростей пешеход-такси. Предусмотреть, чтобы с сверхзвуковой скоростью не ездили и т.д. |
Цитата:
ИМХО надо приучать студентов к общему алгоритму решения любой (абстрактной) задачи: 1. физическая постановка 2. математическа постановка 3. классификация (мат.постановка согласно постановке типовых задач) 4. решение методом согласно классификации классическая задача линейного программирования (решается в общем случае симплекс-методом) выглядит так: Код:
c1*x1 + c2*x2 + c3*x3 + ... ->min |
Уважаемые pva, и lxa85, в начале поста я просил помоч мне решить простую задачу.вы ушли от простой математики к задачам линейного программирования,усложнив мне ее решение.можно как нибудь попроще решить данную зачаду??
|
pirojok750, никуда мы не уходили.
Математика - это математика. Линейное программирование - это последовательно выполнение ряда действий над переменными. (В данном случае T,t1,V1,t2,V2,S и т.д.) Оно(линейное программирование) самое простое. Вот когда добавятся условия, векторы чисел, объекты и потоки, там да, там возникают сложности. Сейчас надо про них забыть, и решать так, как решается! Т.е. по шагам, в одном единственном направлении. Это и называется линейное программирование. (Не путать с линейной алгеброй :)) Сейчас от вас требуется из формулы S = v1t1 + v2T - v2t1; выразить t1. Полученную формулу вписать в алгоритм и всё. Всё остальное лирика и красивые слова. |
Спасибо lxa85, все оказалось достаточно просто.я думаю закодировать это мне не составит труда.
|
Цитата:
1. у этой задачи всегда есть решение (следовательно программа не заглючит, а в предложенном варианте нет проверки на вырожденные случаи, когда например даже на такси не успеешь доехать, и не используется условие "с минимальными затратами") 2. надо добавить пару ветвлений алгоритма pirojok750, простейший пример пренебрежения проверкой ограничений: компьютерный червь Kido использует переполнение строкового буффера чтобы проникнуть в чужую систему. Ну забыли проверить что строчка меньше определённой длины должна быть... Надо приучаться не лениться даже на простых примерах. И ещё: простота решения не связана простотой рассуждений. Бывает что вспомнишь все теории на свете, чтобы прийти к решению типа "result = a + b", и объяснить, почему имено так, без теории не получается. |
Время: 05:40. |
Время: 05:40.
© OSzone.net 2001-