Математические загадки. Задачи на сближение и удаление Если два объекта друг от друга



идеальный мавен (3)

Я многому учусь о шаблонах дизайна, когда я строю свою собственную систему для своих проектов. И я хочу спросить вас о вопросе дизайна, на который я не могу найти ответ.

В настоящее время я создаю небольшой Chat-сервер, используя сокеты, с несколькими клиентами. Сейчас у меня есть три класса:

  1. Person-class, который содержит информацию как ник, возраст и объект Room.
  2. Room-class, который содержит информацию, такую ​​как имя комнаты, тему и список лиц, которые сейчас находятся в этой комнате.
  3. Отель-класс, который имеет список лиц и список номеров на сервере.

Я сделал диаграмму, чтобы проиллюстрировать ее:

У меня есть список людей на сервере в отеле-классе, потому что было бы неплохо отслеживать, сколько сейчас есть онлайн (без необходимости проходить через все комнаты). Люди живут в отеле-классе, потому что я хотел бы иметь возможность искать конкретного человека, не ища номера.

Это плохой дизайн? Есть ли другой способ добиться этого?

Благодарю.

В более крупной системе это было бы плохо, но поскольку из того, что я понимаю в ваших приложениях, эти три класса используются только совместно, это не большая проблема. Просто не забудьте указать переменные-члены человека так, чтобы они указывали, что они содержат ссылку на комнату, а не на экземпляр.

Кроме того, если это не так по соображениям производительности (например, у вас будет огромное количество комнат), вероятно, было бы более чистым сделать недвижимость или геттер, который будет перебирать комнаты и собирать людей, а не кэшировать их в отеле.

Взаимная зависимость не плоха сама по себе. Иногда это требует использование данных.

Я думаю об этом по-другому. Будет проще поддерживать код, в котором меньше отношений вообще - взаимная зависимость или нет. Просто держите его как можно проще. Единственной дополнительной сложностью в вашей ситуации иногда является проблема с проверкой и яйцом во время создания и удаления последовательностей. У вас больше ссылок на бухгалтерию.

Если вы спрашиваете, нужен ли вам список людей в отеле в этом случае, я думаю, что есть два ответа. Я бы начал с того, что ваши объекты (в памяти) обеспечивали эти отношения, но вам не нужна дополнительная таблица соединений между людьми и гостиницами в базе данных. Если вы используете Hibernate, он автоматически генерирует эффективное соединение для вас, если вы попросите его для людей в отеле (он присоединится к отелям на номера.hotel_id для вас).

Строго говоря, проблема взаимной зависимости между классами может быть решена с помощью интерфейсов (абстрактных классов, если ваш язык, например, C ++ или Python) IRoom и IPerson ; в псевдокоде

Interface IPerson IRoom getRoom() // etc interface IRoom iter iterPerson() // etc

это делает только интерфейсы взаимозависимыми друг от друга - фактические реализации интерфейсов должны зависеть только от интерфейсов.

Это также дает вам много возможностей с точки зрения реализации, если вы хотите избежать циклических эталонных циклов (что может быть опасным, например, в CPython путем замедления сбора мусора) - вы можете использовать слабые ссылки, базовую реляционную базу данных с типичной " от одного до многих отношений "и т. д. и т. д. И для первого простого прототипа вы можете использовать то, что проще на выбранном вами языке (возможно, просто и, увы, обязательно круговое, ссылки [[указатели, на C ++]] с Person ссылающимся на Room и Room в list

Задачи на движение навстречу друг другу (встречное движение) — один из трех основных видов задач на движение.

Если два объекта движутся навстречу друг другу, то они сближаются:

Чтобы найти скорость сближения двух объектов, движущихся навстречу друг другу, надо сложить их скорости:

Скорость сближения больше, чем скорость каждого из них.

Скорость, время и расстояние связаны между собой :

Рассмотрим некоторые задачи на встречное движение.

Задача 1

Два велосипедиста выехали навстречу друг другу. Скорость одного из низ 12 км/ч, а другого — 10 км/ч. Через 3 часа они встретились. Какое расстояние было между ними в начале пути?

Условие задач на движение удобно оформлять в виде таблицы:

1) 12+10=22 (км/ч) скорость сближения велосипедистов

2) 22∙3=66 (км) было между велосипедистами в начале пути.

Ответ: 66 км.

Задача 2

Два поезда идут навстречу друг другу. Скорость одного из них 50 км/ч, скорость другого — 60 км/ч. Сейчас между ними 440 км. Через сколько часов они встретятся?

1) 60+50=110 (км/ч) скорость сближения поездов

2) 440:110=4 (ч) время, через которое поезда встретятся.

Ответ: через 4 ч.

Задача 3.

Два пешехода находились на расстоянии 20 км друг от друга. Они вышли одновременно навстречу друг другу и встретились через 2 часа. Скорость одного пешехода 6 км/ч. Найти скорость другого пешехода.

I пешеход

II пешеход

1) 20:2=10 (км/ч) скорость сближения пешеходов

2) 10-6=4 (км/ч) скорость другого пешехода.

Ответ: 4 км/ч.

Для начала вспомним формулы, которые используют при решении подобных задач: S = υ·t , υ = S: t , t = S: υ
где S – расстояние, υ – скорость движения, t – время движения.

Когда два объекта движутся равномерно с разными скоростями, то расстояние между ними за каждую единицу времени или увеличивается, или уменьшается.

Скорость сближения – это расстояние, на которое сближаются объекты за единицу времени.
Скорость удаления – это расстояние, на которое удаляются объекты за единицу времени.

Движение на сближение встречное движение и движение вдогонку . Движение на удаление можно разделить на два вида: движение в противоположных направлениях и движение с отставанием .

Трудность для некоторых учеников заключается в том, чтобы правильно поставить «+» или «–» между скоростями при нахождении скорости сближения объектов или скорости удаления.

Рассмотрим таблицу.

Из неё видно, что при движении объектов в противоположные стороны их скорости складываются . При движении в одну сторону – вычитаются .

Примеры решения задач.

Задача №1. Две автомашины движутся навстречу друг другу со скоростями 60км/ч и 80 км/ч. Определите скорость сближения машин.
υ 1 = 60 км/ч
υ 2 = 80 км/ч
Найти υ сб
Решение.
υ сб = υ 1 + υ 2 – скорость сближения в разных направлениях )
υ сб = 60 + 80 = 140 (км/ч)
Ответ: скорость сближения 140 км/ч.

Задача №2. Из одного пункта в противоположных направлениях выехали две автомашины со скоростями 60 км/ч и 80 км/ч. Определите скорость удаления машин.
υ 1 = 60 км/ч
υ 2 = 80 км/ч
Найти υ уд
Решение.
υ уд = υ 1 + υ 2 – скорость удаления (знак «+» так как из условия понятно, что машины движутся в разных направлениях )
υ уд = 80 + 60 = 140 (км/ч)
Ответ: скорость удаления 140 км/ч.

Задача №3. Из одного пункта в одном направлении выехали сначала автомобиль со скоростью 60 км/ч, а затем мотоцикл со скоростью 80 км/ч. Определите скорость сближения машин.
(Видим, что здесь случай движения вдогонку, поэтому находим скорость сближения)
υ ав = 60 км/ч
υ мот = 80 км/ч
Найти υ сб
Решение.
υ сб = υ 1 – υ 2 – скорость сближения (знак «–» так как из условия понятно, что машины движутся в одном направлении )
υ сб = 80 – 60 = 20 (км/ч)
Ответ: скорость сближения 20 км/ч.

То есть название скорости – сближения или удаления – не влияют на знак между скоростями. Имеет значение только направление движения .

Рассмотрим другие задачи.

Задача № 4. Из одного пункта в противоположных направлениях вышли два пешехода. Скорость одного из них 5 км/ч, другого – 4 км/ч. Какое расстояние будет между ними через 3 ч?
υ 1 = 5 км/ч
υ 2 = 4 км/ч
t = 3 ч
Найти S
Решение.
в разных направлениях )
υ уд = 5 + 4 = 9 (км/ч)

S = υ уд ·t
S = 9·3 = 27 (км)
Ответ: через 3 ч расстояние будет 27 км.

Задача № 5. Два велосипедиста одновременно выехали навстречу друг другу из двух пунктов, расстояние между которыми 36 км. Скорость первого 10 км/ч, второго 8 км/ч. Через сколько часов они встретятся?
S = 36 км
υ 1 = 10 км/ч
υ 2 = 8 км/ч
Найти t
Решение.
υ сб = υ 1 + υ 2 – скорость сближения (знак «+» так как из условия понятно, что машины движутся в разных направлениях )
υ сб = 10 + 8 = 18 (км/ч)
(время встречи можно рассчитать по формуле)
t = S: υ сб
t = 36: 18 = 2 (ч)
Ответ: встретятся через 2 ч.

Задача №6. Два поезда отошли от одной станции в противоположных направлениях. Их скорости 60 км/ч и 70км/ч. Через сколько часов расстояние между ними будет 260 км?
υ 1 = 60 км/ч
υ 2 = 70 км/ч
S = 260 км
Найти t
Решение .
1 способ
υ уд = υ 1 + υ 2 – скорость удаления (знак «+» так как из условия понятно, что пешеходы движутся в разных направлениях )
υ уд = 60 + 70 = 130 (км/ч)
(Пройденное расстояние находим по формуле)
S = υ уд ·t t = S: υ уд
t = 260: 130 = 2 (ч)
Ответ: через 2 ч расстояние между ними будет 260 км.
2 способ
Сделаем пояснительный рисунок:

Из рисунка видно, что
1) через заданное время расстояние между поездами будет равно сумме расстояний, которые прошли каждый из поездов:
S = S 1 + S 2 ;
2) каждый из поездов ехал одинаковое время (из условия задачи), значит,
S 1 =υ 1 · t —расстояние которое проехал 1 поезд
S 2 =υ 2 · t — расстояние которое проехал 2 поезд
Тогда,
S = S 1 + S 2
= υ 1 · t + υ 2 · t = t · (υ 1 + υ 2) = t · υ уд
t = S: (υ 1 + υ 2) — время за которое оба поезда проедут 260 км
t = 260: (70 + 60) = 2 (ч)
Ответ: расстояние между поездами будет 260 км через 2 ч.

1. Два пешехода одновременно вышли навстречу друг другу из двух пунктов, расстояние между которыми 18 км. Скорость одного из них 5 км/ч, другого – 4 км/ч. Через сколько часов они встретятся? (2 ч)
2. Два поезда отошли от одной станции в противоположных направлениях. Их скорости 10 км/ч и 20 км/ч. Через сколько часов расстояние между ними будет 60 км? (2 ч)
3. Из двух сел, расстояние между которыми 28 км, одновременно навстречу друг другу вышли два пешехода. Скорость первого 4 км/ч, скорость второго 5 км/ч. На сколько километров за час пешеходы сближаются друг с другом? Какое расстояние будет между ними через 3 часа? (9 км, 27 км)
4. Расстояние между двумя городами 900 км. Два поезда вышли из этих городов навстречу друг другу со скоростями 60 км/ч и 80 км/ч. На каком расстоянии друг от друга были поезда за 1 час до встречи? Есть ли в задаче лишнее условие? (140 км, есть)
5. Велосипедист и мотоциклист выехали одновременно из одного пункта в одном направлении. Скорость мотоциклиста 40 км/ч, а велосипедиста 12 км/ч. Какова скорость их удаления друг от друга? Через сколько часов расстояние между ними будет 56 км? (28 км/ч, 2 ч)
6. Из двух пунктов, удаленных друг от друга на 30 км, выехали одновременно в одном направлении два мотоциклиста. Скорость первого 40 км/ч, второго 50 км/ч. Через сколько часов второй догонит первого?
7. Расстояние между городами А и В 720 км. Из А в В вышел скорый поезд со скоростью 80 км/ч. Через 2 часа навстречу ему из В в А вышел пассажирский поезд со скоростью 60 км/ч. Через сколько часов они встретятся?
8. Из села вышел пешеход со скоростью 4 км/ч. Через 3 часа вслед за ним выехал велосипедист со скоростью 10 км/ч. За сколько часов велосипедист догонит пешехода?
9. Расстояние от города до села 45 км. Из села в город вышел пешеход со скоростью 5 км/ч. Через час навстречу ему из города в село выехал велосипедист со скоростью 15 км/ч. Кто из них в момент встречи будет ближе к селу?
10. Старинная задача. Некий юноша пошел из Москвы к Вологде. Он проходил в день 40 верст. Через день вслед за ним был послан другой юноша, проходивший в день 45 верст. Через сколько дней второй догонит первого?
11. Старинная задача . Собака усмотрела в 150 саженях зайца, который пробегает в 2 минуты по 500 сажен, а собака за 5 минут – 1300 сажен. Спрашивается, в какое время собака догонит зайца?
12. Старинная задача . Из Москвы в Тверь вышли одновременно 2 поезда. Первый проходил в час 39 верст и прибыл в Тверь двумя часами раньше второго, который проходил в час 26 верст. Сколько верст от Москвы до Твери?

Пусть движение первого тела характеризуется величинами s 1 , v 1 , t 1 , а движение второго – s 2 , v 2 , t 2 . Такое движение можно представить на схематическом чертеже: v 1 , t 1 t встр. v 2 , t 2

Если два объекта начинают движение одновременно навстречу друг другу, то каждое из них с момента движения и до встречи затрачивает одинаковое время – время встречи , т.е. t 1= t 2= t встр.

Расстояние, на которое сближаются движущиеся объекты за единицу времени, называется скоростью сближения, т.е. v сбл.= v 1 +v 2 .

Расстояние между телами можно выразить так: s=s 1 +s 2 .

Все расстояние, пройденное движущимися телами при встречном движении, может быть рассчитано по формуле: s=v сбл. t встр. .

Пример . Решим задачу: «Два пешехода одновременно вышли навстречу друг другу из двух пунктов, расстояние межу которыми 18км. Скорость одного их них 5км/ч, другого – 4км/ч. Через сколько часов они встретятся?»

Решение: В задаче рассматривается движение на встречу двух пешеходов. Один идет со скоростью 5км/ч, другой – 4км/ч. Путь, который они должны пройти, 18км. Требуется найти время, через которое они встретятся, начав движение одновременно.

Участники движения Скорость Время Расстояние
Первый пешеход 5км/ч ?ч - одинаковое 18 км
Второй пешеход 4км/ч

Так как скорости пешеходов известны, можно найти их скорость сближения: 5+4=9(км/ч). Затем, зная скорость сближения и расстояние, которое им нужно пройти, можно найти время, через которое пешеходы встретятся: 189=2(ч).



Задачи на движение двух тел в одном направлении.

Среди таких задач различают два типа: 1) движение начинается одновременно из разных пунктов; 2) движение начинается в время из одного пункта.

Пусть движение первого тела характеризуется величинами s 1 , v 1 , t 1 , а движение второго – s 2 , v 2 , t 2 . Такое движение можно представить на схематическом чертеже:

v 1 , t 1 v 2 , t 2 t встр.

Если при движении в одном направлении первое тело догоняет второе, то v 1 v 2 , кроме того, за единицу времени первый объект приближается к другому на расстояние v 1 -v 2 . Это расстояние называют скоростью сближения : v сбл. =v 1 -v 2 .

Расстояние между телами можно выразить формулами: s= s 1 - s 2 и s= v сбл. t встр.

Пример . Решим задачу: «Из двух пунктов, удаленных друг от друга на расстояние 30км. Скорость одного 40км/ч, другого 50км/ч. Через сколько часов второй мотоциклист догонит первого?»

Решение: В задаче рассматривается движение двух мотоциклистов. Выехали они одновременно из разных пунктов, находящихся на расстоянии 30км.Скорость одного 40км/ч, другого 50км/ч. Требуется узнать, через сколько часов второй мотоциклист догонит первого.

Вспомогательные модели могут быть разными – схематический чертеж (см. выше) и таблица:

Зная скорость обоих мотоциклистов можно узнать их скорость сближения: 50-40=10(км/ч). Затем зная скорость сближения и расстояние между мотоциклистами найдем время, за которое второй мотоциклист догонит первого: 3010=3(ч).

Приведем пример задачи, в которой описывается вторая ситуация движения двух тел в одном направлении.

Пример . Решим задачу: «В 7ч из Москвы со скоростью 60км/ч вышел поезд. В 13ч следующего дня в том же направлении вылетел самолет со скоростью 780км/ч. Через какое время самолет догонит поезд?»

Решение: В задаче рассматривается движение поезда и самолета в одном направлении из одного пункта, но в разное время. Известно, что скорость поезда 60км/ч, скорость самолета – 780км/ч; время начала движения поезда 7ч, а самолета 13ч следующего дня. Требуется узнать, через какое время самолет догонит поезд.

Из условия задачи следует, что к моменту вылета самолета поезд прошел определенное расстояние. Если его найти, то данная задача становится аналогичной предыдущей задаче.

Что бы найти это расстояние нужно подсчитать, сколько времени находился в пути поезд: 24-7+13=30(ч). Зная скорость поезда и время, которое он был в пути до вылета самолеты, можно найти расстояние между поездом и самолетом: 6030=1800(км). Затем найдем скорость сближения поезда и самолета: 780-60=720(км/ч). И далее, время, через которое самолет догонит поезд: 1800720=2,5(ч).



Статьи по теме