|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Математическая задача |
|
C/C++ - Математическая задача
|
Пользователь Сообщения: 76 |
Профиль | Отправить PM | Цитировать Суть вот в чем.с клавиатуры вводится путь S, скорость на такси -V1,скорость пешком V2.так же вводится обшее время пути t и стоимость р1-рублей за километр на такси.необходимо расчитать как выгоднее преодолеть путь,чтобы получились минимальные затраты.если двигаться пешком то затрат нет,оплачивается только поездка на такси.язык может быть си или паскаль,но не делфи.
|
|
Отправлено: 00:17, 01-10-2009 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать математически решить вроде получается.а вот пока закодировать не очень.буду пробовать сегодня.при помощи 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 |
Отправлено: 21:17, 01-10-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pirojok750:
S = v1t1 + v2t2; t2 = T - t1; S = v1t1 + v2T - v2t1; t1=?. Дальше задача "распадается", писать не интересно. Операторы С++ читать читаю, писать, не пишу. Поэтому пишу Pascal версию. var v1,v2:real; // на всякий случай, дробной пешей скорости 3,5 км/ч T,t1,t2:real; // никогда час в час не получится. :( S:integer; // простим сотни метров, округлим до целого кол-ва км. Z,p1:real; //Z - затраты на путь. p1 - стоимость км. begin write('Input <S,v1,v2,T>' ); readln(S,v1,v2,T); t1:=?; // номер формулы в описании; t2:=T-t1; // writeln('t1 = 't1); writeln('t2 = 't2); Z:=?; writeln('Стоимость пути = ', Z); end. |
|
------- Отправлено: 00:27, 02-10-2009 | #12 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать lxa85, дальше путь пройденый на такси умножается на р1.
t1:=?; // номер формулы в описании; t1 изначально неизвестен.есть только обшее время T |
Отправлено: 01:20, 02-10-2009 | #13 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать правильно ли я понимаю постановку задачи?
T1 + T2 = T v1*T1 + v2*T2 = S | 1, 1| {T1,T2} * |v1, v2| = {T,S} Если матрица не вырождена, то решение уравнения, если вырождена, то либо решения нет (v1=v2, T<>S), либо всё время идти пешком (v1=v2, T=S) |
Последний раз редактировалось pva, 02-10-2009 в 07:23. Причина: правильно ли я понимаю постановку задачи? Отправлено: 07:22, 02-10-2009 | #14 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pirojok750:
Меня интересует формула получения t1. из предыдущей. S= ... Поэтому я и не стал писать ее, предоставив эту возможность тебе. Цитата pirojok750:
pva, ИМХО сначала пусть работает "топорно", затем уже вводить ограничения на отрицательную скорость, отношения скоростей пешеход-такси. Предусмотреть, чтобы с сверхзвуковой скоростью не ездили и т.д. |
||
------- Отправлено: 08:49, 02-10-2009 | #15 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Цитата lxa85:
ИМХО надо приучать студентов к общему алгоритму решения любой (абстрактной) задачи: 1. физическая постановка 2. математическа постановка 3. классификация (мат.постановка согласно постановке типовых задач) 4. решение методом согласно классификации классическая задача линейного программирования (решается в общем случае симплекс-методом) выглядит так: |
|
Отправлено: 15:07, 02-10-2009 | #16 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Уважаемые pva, и lxa85, в начале поста я просил помоч мне решить простую задачу.вы ушли от простой математики к задачам линейного программирования,усложнив мне ее решение.можно как нибудь попроще решить данную зачаду??
|
Отправлено: 15:21, 02-10-2009 | #17 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать pirojok750, никуда мы не уходили.
Математика - это математика. Линейное программирование - это последовательно выполнение ряда действий над переменными. (В данном случае T,t1,V1,t2,V2,S и т.д.) Оно(линейное программирование) самое простое. Вот когда добавятся условия, векторы чисел, объекты и потоки, там да, там возникают сложности. Сейчас надо про них забыть, и решать так, как решается! Т.е. по шагам, в одном единственном направлении. Это и называется линейное программирование. (Не путать с линейной алгеброй ) Сейчас от вас требуется из формулы S = v1t1 + v2T - v2t1; выразить t1. Полученную формулу вписать в алгоритм и всё. Всё остальное лирика и красивые слова. |
------- Отправлено: 17:27, 02-10-2009 | #18 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Спасибо lxa85, все оказалось достаточно просто.я думаю закодировать это мне не составит труда.
|
Отправлено: 19:06, 02-10-2009 | #19 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Цитата pirojok750:
1. у этой задачи всегда есть решение (следовательно программа не заглючит, а в предложенном варианте нет проверки на вырожденные случаи, когда например даже на такси не успеешь доехать, и не используется условие "с минимальными затратами") 2. надо добавить пару ветвлений алгоритма pirojok750, простейший пример пренебрежения проверкой ограничений: компьютерный червь Kido использует переполнение строкового буффера чтобы проникнуть в чужую систему. Ну забыли проверить что строчка меньше определённой длины должна быть... Надо приучаться не лениться даже на простых примерах. И ещё: простота решения не связана простотой рассуждений. Бывает что вспомнишь все теории на свете, чтобы прийти к решению типа "result = a + b", и объяснить, почему имено так, без теории не получается. |
|
Последний раз редактировалось pva, 03-10-2009 в 12:36. Причина: смайлы зло Отправлено: 12:36, 03-10-2009 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Задача по информатике | Triz | Программирование и базы данных | 22 | 24-12-2012 23:02 | |
Теория - Задача | ManHack | Программирование и базы данных | 4 | 23-01-2009 18:21 | |
Delphi - Простая задача | rim_muvies | Программирование и базы данных | 13 | 31-03-2008 13:44 | |
Сетевая задача | TechNoir | Microsoft Windows NT/2000/2003 | 8 | 29-01-2007 19:04 | |
Задача С++ | papam | Программирование и базы данных | 1 | 28-11-2005 11:34 |
|