![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 06.12.2020
Сообщений: 5
|
![]()
Пользователь указывает высоту и ширину большего прямоугольника, а так же высоту и ширину меньшего прямоугольника.Нужно узнать сколько маленьких прямоугольников можно вписать в большой.
double h1, h2, w1, w2, big_rectangle, small_rectangle, small_rectangles_in_big_rectangle; S_big_rectangle, S_small_rectangle; cout << " укажите высоту и ширину большого треугольника; cout << " укажите высоту и ширину меньшего треугольника; sin >> big_rectangle; sin >> small_rectangle; S_big_rectangle = h1 * w1; S_small_rectangle = h2 * w2; small_rectangles_in_big_rectangle = S_big_rectangle/S_small_rectangle; cout << "Колличество маленьких прямоугольников,вписанных в большой" << "\n"; |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
1. Требуется длина и ширина, а вводится одно значение - чё за фигня ?
2. Просто площадь поделить на площадь - не годится. Дробное число предметов (прямоугольников) - не бывает. 3. И вообще не так-то просто. Прямоугольники малые - можно поворачивать? Неясно. Вырисовываются интересные варианты. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 06.12.2020
Сообщений: 5
|
![]()
Я вроде бы два значения ввела. double h1, h2, w1, w2
Вот такую нам задачу задали на первых уроках по визуал студио, не объясняя почти ничего. Пытаюсь разобраться. Спасибо за то,что хоть ответили. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Тут - полное непонимание сути языка.
Цитата:
"Учиться и ещё 2 раза учиться" © Лёнин. Цитата:
Последний раз редактировалось digitalis; 06.12.2020 в 22:06. |
||
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 17.06.2012
Сообщений: 1,027
|
![]()
если без переворота прямоугольников
целое количество прямоугольников по горизонтали умножить на целое количество прямоугольников по вертикали зато поворачивая прямоугольники вариантов больше
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Именно этот тезис я прокламировал в #2. А что, если всё же - повертеть ?
![]() |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,378
|
![]()
Подарю вам свой алгоритм, который разрабатывал около 20 лет назад.
![]() И так. У нас есть прямоугольник со сторонами H и W и прямоугольник со сторонами h и w. Тут большие буквы для большого прямоугольника, а маленькие - для малого. Представим себе большой прямоугольник в виде резиновой поверхности, на которой нарисован малый прямоугольник. Мы можем растянуть поверхность за одну из сторон так, что малый прямоугольник станет квадратом. Очевидно, что если выразить площадь большого прямоугольника через площадь малого, то мы получим сколько малых прямоугольников поместится в большом. Дробную часть отбрасываем. Растяжение - это изменение масштаба: k = h/w. В нашем случае это делается по одной из осей. Думаю, что код будет простым. ![]() У меня нет полной уверенности в этом алгоритме, но тестирование случайным набором давало положительный результат. ![]() PS: Конечно же необходимы некоторые первоначальные проверки. Например, что ни один размер меньшего прямоугольника не превышает ни одного размера большего. Лучше разместить прямоугольники так, что бы большие их стороны были параллельны, если допускается поворот. PSS: Алгоритм разрабатывался для случая, когда на форме заданных размеров (X, Y) необходимо было разместить заданное число прямоугольников N. Прямоугольники должны иметь заданное соотношение сторон, скажем, 3/4. Необходимо было определить размеры этих прямоугольников (x, y).
Как-то так, ...
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Ничего не понял. Размещение д.быть на реальном, а не "растянутом" прямоугольнике. В общем-то, эта задача - не для 6-го класса, а как вариант "задачи о ранце" дискретной оптимизации. Мне ничего на ум не приходит, кроме методом Монте-Карло громоздить случайным образом и находить максимум. При быстродействии современных компов перебор нескольких миллионов вариантов даст что-то близкое к оптимуму.
А лучше не заморачиваться и ввести ограничение: поворачивать - нииизя! А если можно, то все одинаково: или вдоль, или поперёк, не вперемежку. Иначе - см. выше. |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 17.06.2012
Сообщений: 1,027
|
![]()
Если прямоугольники малые поворачиваются ортогонально
тогда известно горизонтальное и вертикальное количество минимальное и максимальное и умножив получаем теоретические 4 варианта Между прочим использованы 2 теоремы Решение задачи ниже: шир * выс 20 * 17 10 * 6 шир 2 и выс 2 интеграл: 4 20 * 17 6 * 10 шир 3 и выс 1 интеграл: 3 вперемешку выс 6 + 10 значит 2 ряда и в повёрнутом ряду 10+10 значит 2 шир 6 + 6 + 6 значит 3 интеграл: 2 + 3 = 5 проверено в autocad совместимой программе итого: поворачиваемые заполнять слоями
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
Последний раз редактировалось сфинкс; 07.12.2020 в 20:34. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Чтоб не размазывать кашу по столу: большой 20 * 17, малый 10 * 6. Решение - в студию!
Что поворачивать ортогонально - это и козе понятно. Доказывать математически неохота, но интуитивно чувствую: заполнение не параллельно осям координат оптимальным не будет никогда. Принимаю опровержение - конкретным примером. И ещё раз: убеждён, что если решение "по уму", то оно отнюдь не школярское. Последний раз редактировалось digitalis; 07.12.2020 в 17:28. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите начинающему!! | т54 | PHP | 2 | 16.10.2014 14:54 |
Помогите начинающему на С++ | Tat-ka | Помощь студентам | 1 | 30.10.2009 22:45 |
Помогите начинающему. | alex2693 | Общие вопросы C/C++ | 0 | 09.04.2009 22:40 |