![]() |
|
Общие темы Обо всем, что касается Ирландии и жизни здесь. |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 |
Участник
|
![]()
Из пункта А в одном направлении двигаются Мальчик
![]() ![]() между ними постоянно бегает Собачка ![]() Определить расстояние от п.А до собачки по прошествии 2 часов? |
![]() |
![]() |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#2 |
Заслуженный Участник
|
![]()
Это задачка из задачника Сахарова, там и решение есть, кажется. На самом деле, простая задачка, если подумать
![]()
__________________
![]() WBR, =Alexander
|
![]() |
![]() |
![]() |
#3 | |
Заслуженный Участник
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#5 |
My name is Exaybachay
|
![]()
я могу ошибаться, но задача решения не имеет, так как неизвестно в какие моменты времени относительно друг друга дети вышли, а собачка, соотвественно, выбежала из пункта.
|
![]() |
![]() |
![]() |
#6 | |
Заслуженный Участник
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 | |
Заслуженный Участник
|
![]() Цитата:
Но что-то мне подсказывает, что я тут могу ошибаться без проблем: возможно, мы вообще неправильно понимаем задачку.
__________________
![]() WBR, =Alexander
|
|
![]() |
![]() |
![]() |
#9 |
Заслуженный Участник
|
![]()
Кара, времена выхода все одинаковые. Это Сахаровская задачка, и:
1. Она плохо сформулирована; 2. Я понял, как ее решать. Счас решу. Форму только очередную денежную заполню ![]()
__________________
![]() WBR, =Alexander
|
![]() |
![]() |
![]() |
#12 |
Заслуженный Участник
|
![]() Код:
int main(int argc, char* argv[]) { double dV = 3.06; double bV = 1.94; double gV = 1.39; double gS=0,bS=0,dS=0; for(int t = 0, s = 1; t < (3600*2); t++) { gS += gV; bS += bV; if (dS > bS) s = -1; if (dS < gS) s = 1; dS += (s) * dV; } printf("Hello dog: %f\n", dS); return 0; } приблизительно 12705 метра и 12 сантиметров ![]() |
![]() |
![]() |
![]() |
#13 |
My name is Exaybachay
|
![]()
"ох уж мне эти программисты с их императивным мышлением" - сказал бы я себе, если бы был не программистом ;)
а именно: производим легкую модификацию: void sobachka(int steps) { double dV = 3.06/steps; double bV = 1.94/steps; double gV = 1.39/steps; double gS=0,bS=0,dS=0; for(int t = 0, s = 1; t < (3600*2*steps); t++) { gS += gV; bS += bV; if (dS > bS) s = -1; if (dS < gS) s = 1; dS += (s) * dV; } printf("Hello dog: %f\n", dS); } вызываем: sobachka(1); sobachka(10); sobachka(100); имеем: 12705.12 11757.744 13936.9536 хехе так что паша ты подумай, эт ты в пользу точного решения или все же в пользу теории квантовомеханической размазанности собачки ровным слоем между нашей парочкой? ;)) я бы все же был скромнее и сказал: в подверждение некорректности подобного решения ;) --- хехе "а не слишком ли быстро я бегу - подумал мальчик" ;)) |
![]() |
![]() |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#14 |
My name is Exaybachay
|
![]()
да, кстати, для еще желающих решить задачку, даю наводку (на водку не даю ;) : по-моему мнению собачка за любой промежуток времени от 0 до какого-то t пробегает бесконечное количество раз между барашней и чиста пацаном ;) при этом пробегая конечное расстояние. мне так каацца.
|
![]() |
![]() |
![]() |
#15 |
Участник
|
![]()
Комментарии супруга к этой задачке:
1) Решаем с конца, тогда получается что собачка может быть в любом месте между мальчиком и девочкой. 2)Сдвигаем мальчика на расстояние Х от пункта А. Тогда задача должна иметь аналитическое решение. Берём предел при Х->0. Если этот предел сходится, можно получить точное положение собачки через 2 часа. Если нет - бедная псина "размазана" между 10 и 14 километрами. 3) Прикол в том, что если менять PRECISION то решение меняется. void task() { //double PRECISION = 1.0; //double PRECISION = 10.0; //double PRECISION = 100.0; //double PRECISION = 1000.0; //double PRECISION = 10000.0; double PRECISION = 100000.0; double speedBoy = (7 * 1000.0) / 3600.0 / PRECISION; double speedGirl = (5 * 1000.0) / 3600.0 / PRECISION; double speedDog = (11 * 1000.0) / 3600.0 / PRECISION; double distanceBoy = 0.0, distanceGirl = 0.0, distanceDog = 0.0; bool bDirection = true; // true - to boy, false - to girl unsigned long lChangeDirection = 0; double dTime = 7200.0 * PRECISION; for (double i = 1; i <= dTime; ++i) { distanceBoy += speedBoy; distanceGirl += speedGirl; if (bDirection) { distanceDog += speedDog; if (distanceDog >= distanceBoy) { bDirection = false; lChangeDirection++; } } else { distanceDog -= speedDog; if (distanceDog <= distanceGirl) { bDirection = true; lChangeDirection++; } } } cout << "boy = " << distanceBoy << endl; cout << "girl = " << distanceGirl << endl; cout << "dog = " << distanceDog << endl; cout << "lChangeDirection = " << lChangeDirection << endl; } |
![]() |
![]() |