Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Взвешивание на равноплечих весах

Ответить
Настройки темы
C/C++ - Взвешивание на равноплечих весах

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите плз. Кто знает какой алгоритм или как реализовать?:

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

Отправлено: 19:51, 26-05-2012

 

Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата basshead:
Необходимо определить наименьший набор гирь »
А вы думали как бы вы решали такую задачу если бы у вас просто весы стояли перед вами?

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

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

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

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

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:55, 28-05-2012 | #2



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

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


Ветеран


Сообщения: 1647
Благодарности: 146

Профиль | Отправить PM | Цитировать


Что-то задача мутная. Скажем, дано: есть изделие весом в 19 грамм. Я отвечаю: наименьшим набором гирь для ее взвешивания является одна-единственная гиря весом в 19 грамм. А Вы бы как ответили?

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

Отправлено: 13:04, 28-05-2012 | #3


Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


насколько мне известно гири бывают только весом ряда 1,2,5,10. по этому скажем 19г можно взвесить 2-мя гирями: 19+1г и 20г на чашах соответственно. а с алгоритмом все просто, самое простое - тупо перебор, если хватает мозгов - оптимизируй его выкидывая лишнее. можно попробовать поискать условия, когда ставить гирьки на 2 чаши весов заведомо лучше чем только на одну чашу

Отправлено: 19:20, 28-05-2012 | #4


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата Beyound:
насколько мне известно гири бывают только весом ряда 1,2,5,10 »
Но тут снова не указывается количество гирь. Может там три гири по 5 г. и дву гири по 1 г. Интереснее конечно поставить задачу с ограниченным, но достаточным для взвешивания, набором гирь. Думаю что нужно более точно формулировать условие.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 10:34, 29-05-2012 | #5


Ветеран


Сообщения: 1647
Благодарности: 146

Профиль | Отправить PM | Цитировать


Цитата Beyound:
насколько мне известно гири бывают только весом ряда 1,2,5,10. »
Безусловно. Есть некий устоявшийся набор не только гирь, но и монеток, жестко привязанный к десятичной системе. А вот в Англии система монеток совсем другая была, не десятичная. В идеале, задача имеет все шансы плавно перейти в вопрос о выборе некой наиболее удобной системы построения такой шкалы взвешивания, и я не сомневаюсь, что наиболее удобная шкала десятичной не будет. Троичная хорошо пойдет, наверняка, особенно при раскладе разновесов на обе чашки. Из условия единственным критерием "удобства" является наименьшее число гирь. Что-то мне говорит, что если прошерстить, скажем, двоичные, троичные, четверичные и прочие системы разновесов, и найти наиболее экономный по числу гирь, то задача будет решена. Лично я (без детальной проверки, по ощущениям) за троичную систему.

Отправлено: 12:12, 29-05-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Взвешивание на равноплечих весах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход