Ю4.36

Задача: Гидрологами исследовано течение реки в некотором сечении: произведена серия замеров от одного берега до другого перпендикулярно фарватеру, полученные данные: [latex]{s}_{i}[/latex]  — расстояние от левого берега, м; [latex]{h}_{i}[/latex]  — глубина реки, м; [latex]{v}_{i}[/latex]  — скорость течения, м/с, [latex]i=1,2…,n[/latex] . Каков расход воды в секунду? То есть сколько кубометров воды протекает через сечение в секунду?

Тесты:  (сначала вводятся все данные одного массива, а не поочерёдно)

Ввод Ответ Комментарий
3
[2 4 6] [4 5 5] [3 7 2]
 88 Работает
2
[13 42] [17 18] [3.14 2.71]
1409.85 Работает

Объяснение переменных:

int n - количество замеров int area = 0 - площадь поперечного сечения (требуется для формулы расхода воды) int velocity = 0 - cумма скоростей, позже будет делится на количество замеров (тоже для формулы) double s[n], h[n], v[n]; - массивы с данными о замере

Код: проверить на ideone.

Алгоритм выполнения описан в комментариях в коде.

Используется формула расхода воды:  [latex]Q=Av[/latex]  , где [latex]A[/latex]  — площадь поперечного сечения, а [latex]v[/latex]  — среднее арифметическое скорости течения всех замеров. Метод подсчета площади сечения реки описан по ссылке.

Для понимания метода:

270

 

Первый и последний «замер» на картинке образуют треугольники (относительно берега). Между ними —  прямоугольные трапеции (  [latex]S=\frac { a+b }{ 2 } h[/latex], где [latex]a[/latex], например, линия 2-го замера (по картинке), а  [latex]b[/latex]  линия 3-го замера соответственно, [latex]h[/latex]  — расстояние от 2-го замера до 3-го (нынешнее расстояние от берега отнять прошлое). Суммируем площади фигур — это и будет площадь сечения реки.

Замечание:

Данные должны вводится последовательно относительно удаления от левого берега. Подразумевается, что гидрологи обязательно замеряли всю реку (от левого до правого берегов) минимум 2-мя замерами.

 

Related Images:

12 thoughts on “Ю4.36

  1. — Прочитайте внимательно условие задачи.
    — Добавьте в метки ключевые слова из условия задачи.
    — Введите из стандартного потока число n и все три массива.
    — Выполните вычисления.
    — В отчёте напишите формулу по которой Вы провели вычисления.

    • — Готово
      — Готово
      — Готово, хоть и задача этого не требует
      — Готово
      — Готово

    • 1. не уверен, что Вы ВНИМАТЕЛЬНО прочитали условие и то, что написал Игорь Евгеньевич.
      2. да
      3. нет, задача этого требует (пусть и неявно) и главное этого требуем и я и Игорь Евгеньевич, а Вы не вводите массивы со стандартного ввода
      4. допустим какие-то вычисления проводятся, но те ли
      5. формула расхода воды верная, уже хорошо, «делают они это периодичностью в метр» — это почему? Мне кажется Вы неправильно поняли, что такое s, s -должно быть массивом, на сколько текущее измерение удалено от левого берега. У Вас почему-то есть rashod2 и rashod — в чем разница? что-то тут не так.

      В общем, повторю первый совет Игоря Евгеньевича «Прочитайте внимательно условие задачи». Честно скажу, мне помогло только повторное внимательное прочтение условия задачи понять, что же хочет от нас Юркин.

    • А вот те, у кого в школе была летняя экологическая или краеведческая экспедиция с группой гидрологов отлично Юркина понимают 🙂
      Говорил мне учитель географии Александр Иванович Почекаев, что оно мне понадобится…

  2. «Введите из стандартного потока число n и все три массива.»
    Что за «int tAsk (teachersAsk) — для дополнительного задания (введите из стандартного потока число и все три массива)»??? Оно у Вас никак не используется и абсолютно лишнее — удалите его из программы и отчета. В качестве числа предполагалось n, которое у Вас и так есть.

    Как это Вы просуммировали скорость? Почему? Мне кажется нужно было суммировать расход воды: если через часть сечения 1 протекает Q_1 кубометров воды в секунду, а через часть 2 протекает Q_2 кубометров воды в секунду, то через них суммарно протекает Q_1 + Q_2 кубометров воды в секунду. Отмечу, что суммировать площади частей сечения тоже можно — таким образом получив общую площадь сечения — но это в задаче не спрашивается. А вот суммарная скорость здесь не имеет никакого смысла.

    Теперь разобрался — Вы считаете среднюю скорость по всем замерам и общую площадь сечения умножаете на среднюю скорость, ОК.

    Теперь насчет площади — сомневаюсь, что s[i]*h[i] верная формула. Если употребление h[i] в произведении еще как-то уместно, то s[i] — это расстояние от левого берега до очередного замера, а не ширина очередного участка. Задача непростая — теперь нужно выбрать как мы аппроксимируем сечение реки — прямоугольниками или трапециями. Вроде как классически сечение реки аппроксимизируется трапециями и на крайних участках треугольниками — см. здесь. Значит вроде как Вам нужно знать дополнительный параметр — ширину реки (вместо Вашего tAsk ) — чтобы посчитать площадь последнего треугольника.

    • Спасибо за замечания и материал. Сразу всё понял (если понял 🙂 ).

      Откорректировал.

  3. Почему (h[i-1]*h[i])/2 умножить? Зачем суммируем s[i], ведь s[i] — это расстояния от берега и длина участка просто s[i]-s[i-1].

    Вы подразумеваете, что при ( i == n — 1 ) указаны данные правого берега? Тогда h[n-1] нулевое и в формуле наверное нужно использовать предыдущее h (если я правильно Вас понял). Тогда с тестами беда. Да и вообще с таблицей у Вас проблемы: две строчки слились в одну почему-то.

    Хорошо, что нашли картинку, правда мне не все в ней понятно. Но лучше пусть будет такая картинка, чем без нее.

    Пока засчитать задачу не могу.

    • Описался в формуле, спасибо. С расстояниями намудрил.
      Исправил код, в отчете подробнее описал нахождение площади сечения.

      Не до конца понял замечание «h[n-1]». Если и подобное есть в коде, то только тогда, когда h[n-1] (h[i-1]) имеет присвоенное значение, то есть начиная со второго замера.

  4. Задача (как и многие у Юркина) сформулирована не очень строго. В этой задаче, например, совсем не ясно где начинается сечение реки и где оно заканчивается, какая глубина и скорость у берегов. Естественно, что река начинается на расстоянии 0 от берега. Но какая там глубина и скорость? Если предположить, что среди измерений обязательно будут встречаться измерения у берегов, то достаточно их отсортировать по возрастанию и применить аналог формулы трапеций для соседних измерений. Получится что-то вроде этого:

    Ссылка для запуска

Добавить комментарий