LINUX.ORG.RU

Задача на вычисление расхода воды

 


0

3

Помогите, друзья и коллеги, с решением задачи. Сыну задали в кружке робототехники, сидим голову ломаем.
Имеется датчик уровня воды, доступ к значению, которого осуществляется через переменную int X; То есть в X в любой момент времени будет лежать текущее значение уровня воды в ведре (уже в пересчете на миллилитры).
Предстоит написать код, который бы каждую секунду выводил на экран сколько воды утекло с момента запуска программы. В моем понимании это какой-то бесконечный цикл, внутри которого вычисляется разница между текущим и предыдущим значением, но на этом идеи заканчиваются.
Или нужно сохранять вектор значений, например, за минуту, вычислять среднее значение и т.д. Буду рад любому совету.
В глубине души понимаю, что задача даже не для первого курса института. Но ничего не могу поделать, застопорился и всё тут.



Последнее исправление: podovalov5 (всего исправлений: 1)

В глубине души понимаю, что задача даже не для первого курса института

класса для восьмого

MyTrooName ★★★★★
()
Ответ на: комментарий от beastie

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

newquestion
()

Эй, васян, а чё ты свой говнокод удалил? Я к нему камент писал:

Теперь давай представим ситуацию, когда дырявое ведро стоит под дырой в крыше во время дождя. Прошу заметить, вода-таки утекает.

anonymous
()

в X в любой момент времени будет лежать текущее значение уровня воды в ведре

А вот кстати, а как вы будете считать расход, мне интересно, когда ведро наполнится, а?

anonymous
()

Блин. Задача плавно перетекает в задачу про монетки. Поэтому подброшу.

А почему ТС заставили согласиться с тем, что в ведро может доливаться вода? Если это так, то расход уже нельзя измерить одним датчиком *уровня* жидкости.

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

shrub ★★★★★
()
Ответ на: комментарий от shrub

А почему ТС заставили согласиться с тем, что в ведро может доливаться вода? Если это так, то расход уже нельзя измерить одним датчиком *уровня* жидкости. Поэтому из условия задачи ясно, что вода из ведра просто вытекает без добавления новой воды.

Согласен. Странно, что в разделе dev такие инженерные инженеры, что не понимают такой простой вещи:)

newquestion
()

задача неполная

/thread

anonymous
()
Ответ на: комментарий от beastie

Задача для пацана, не насилуйте Оккама!

Вот если бы задачу в общих чертах решать — да, всякие ПИД-регуляторы попрут, теория автоматического управления, конечные автоматы и прочая...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от t184256

Самый тупой подход тут продемонстрировал ты. Сначала, не подумавши, зпостил бредовый код, затем чтобы как-то оправдать бредовость этого кода, придумал какой то долив (почему не дополнительный расход — утечки?) Убедил тса, что это __нужно__, и учитывая это сгенерированное тобой *обстоятельство* бредовость перестала быть столь очевидной. Молодец. Не забудь испарение воды, и отхлебывание из ведра случайными мимо проходящими личностями в условия вписать. Так уже точно никто не разберется.

newquestion
()
Ответ на: комментарий от newquestion

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

затем чтобы как-то оправдать бредовость этого кода, придумал какой то долив

Ну ты и трепло, просто слов нет. Ну-ка где я «придумал долив»?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Я решил поставленную задачу

ничего ты не решил. Ты запутался в 2 соснах

Ну-ка где я «придумал долив»?

Задача на вычисление расхода воды (комментарий)

правда, там и до тебя он фигурировал, ты не первый, да, ты просто за него уцепился.

newquestion
()
Ответ на: комментарий от newquestion

ничего ты не решил

обоснуй. решил (да, с точностью до знака), и тебя еще подучил.

ты просто за него уцепился

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

t184256 ★★★★★
()
Ответ на: комментарий от newquestion

Я-то думал, что ты осилил прочитать про volatile и запрет на проведение твоей оптимизации... или хотя бы слова «в любой момент содержит» и просто стыдливо перевел тему, но нет. Я слишком хорошо о тебе подумал, ты продолжаешь позориться гордо и громко. Ну что же, удачи тебе по жизни, а я откланяюсь. Если что, час моей преподавательской деятельности стоит 300р; если не найдешь беднягу, способного тебе вдолбить, как происходит работа с volatile-переменными — обращайся.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

он очевидно и моментально превращает задачу в нерешаемую.

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

newquestion
()
Ответ на: комментарий от t184256

работа с volatile-переменными

ога, только открытым остался вопрос, а есть ли эта волотильность в условии задачи, или ты сам ее придумал, преподаватель.

newquestion
()

сколько воды утекло с момента запуска программы

Подождите, а причём тут тогда ведро? Нас явно хотят запутать!

anonymous
()
Ответ на: комментарий от newquestion

есть

Имеется датчик уровня воды, доступ к значению, которого осуществляется через переменную int X; То есть в X в любой момент времени будет лежать текущее значение уровня воды в ведре (уже в пересчете на миллилитры).

mix_mix ★★★★★
()
Ответ на: есть от mix_mix

Нет. Там имеется в виду, что расход всегда постоянен, а наша задача просто в том, чтобы считывать значение этой переменной раз в секунду. Если есть волотильность (в условии ее нет) то она должна быть реализована нами же, что тоже несложно. Иначе глупо было бы. Все эти предыдущие ораторы скатываются в демагогию, типа «как мы можем знать то что мы не знаем».

newquestion
()
Ответ на: комментарий от newquestion

должна быть реализована нами же

либо предоставляться каким-то интерфейсом, которого в условии тоже нет.

newquestion
()
Ответ на: комментарий от newquestion

а есть ли эта волотильность в условии задачи

Смотря как реализован опрос. Я бы для повышения точности таки использовал volatile, считывая показания АЦП по таймеру 1 раз в секунду. Можно, кстати, чуть по-другому сделать (чтобы помехи снизить): читать АЦП в кольцевой буфер при помощи ПДП (т.е. никакие софтовые ресурсы не жрутся), а по прерыванию таймера вычислять медиану и выводить ее значение.

Если же в прерывании лишь флаг выставляется (который, кстати, в этом случае должен быть volatile), то значение АЦП не надо хранить в волатильной переменной.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от t184256

долго не мог понять, зачем тебе иксы запускать ...

sudopacman ★★★★★
()
Ответ на: комментарий от Eddy_Em

Пы.Сы. Здесь для повышения точности измерения температур я именно кольцевой буфер и завел для каждого канала АЦП (по 9 значений на канал, что вполне позволяет отсеять всякие выбросы).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от shrub

Если это так, то расход уже нельзя измерить одним датчиком *уровня* жидкости.

Наблюдая за поведением изменения уровня воды, можно отслеживать добавление воды.

APPLE_OS_XX_OS_XY
()
Ответ на: комментарий от APPLE_OS_XX_OS_XY

А вот фиг! Если ты не будешь измерять поток на выходе, то ничего у тебя не выйдет. Пример: за секунду долили 100мл и слили 110. Как ты определишь, что слили 110мл, а не 10?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Зависит, но у нас же есть датчик. С нескольких измерений можно достаточно точно предсказать весь дальнейший процесс. Хотя, я не прав. если ведро имеет какую-то нетепичную форму, сказать что-то исходя из показаний датчика уровня воды намного сложнее. А если допустить ещё и добавление воды, то вообще.

APPLE_OS_XX_OS_XY
()
Ответ на: комментарий от hope13

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

exception13 ★★★★★
()
Ответ на: комментарий от exception13

Согласен, но если ОП не смог сразу объяснить, что конкретно ему нужно, то он и получил примерный ответ. А так его только запутали.

hope13 ★★★
()
Ответ на: комментарий от APPLE_OS_XX_OS_XY

Эта задача, вроде как, сводится к интегро-дифференциальному уравнению, если про добавление воды забыть, так что из показаний датчика можно вполне себе определить функцию площади сечения ведра.

mix_mix ★★★★★
()
Последнее исправление: mix_mix (всего исправлений: 1)
Ответ на: комментарий от podovalov5

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

peregrine ★★★★★
()

значение уровня воды

Значение уровня воды совсем не гарантирует, что там этой воды именно столько. В ведро могла попасть мышь, нопремер. Или, нопремер, вомбат. Ну или нет. И если вы хотите считать утёкшую воду, то ставьте датчик утёкшей воды. И ведро поменяйте на новое, с крышкой. Спасибо за внимание. Следующий.

anonymous
()
Ответ на: комментарий от beastie

Общую без информации о датчике, бочке и способе долива вообще не решить.

peregrine ★★★★★
()
Ответ на: комментарий от MyTrooName

Для детсада она или для начальной школы. Какой институт? Какой восьмой класс? Там всё элементарно на уровне 2+2.

peregrine ★★★★★
()
Ответ на: комментарий от t184256

он очевидно и моментально превращает задачу в нерешаемую

Далеко не факт. Долив может происходить дискретно, т.е. останавливается выливание, проходит пара секунд (датчик снимает каждые 0,5 с), начинается долив, заканчивается, пауза, начинается отлив.

Но это уже фантазирование над условиями.

peregrine ★★★★★
()
Ответ на: комментарий от APPLE_OS_XX_OS_XY

Не только, но с ведром от дизайнера будет очень (невероятно) много мороки.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

именно. при этом тау-сопутствующие онтологии тсу пригодятся в его робо-эксперементо-исследованиях-лабах.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

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

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

а нет такой уж пропасти между тем что в первом классе где то там чё то узнают и дифурами.

qulinxao ★★☆
()

очень показательный тред

Debasher ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.