powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
9 сообщений из 34, страница 2 из 2
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606305
wewenami2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBo,

Спасибо, исправил.
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606313
cronix111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один заход:

1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника.
2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов.
3. Извлечь квадратный корень из результата a = sqrt(q).
4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a.
5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a).
6. Если ra <= rb, то сторона искомого квадрата x = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a.
7. Иначе x = a - rb/(div(B/b)+1).

Сорри за ошибки.
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606345
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wewenami2Gennadiy Usov,

Я не понимаю вашу формулу и как реализовать её в коде.


У вас стандартная задача.
Алгоритмов кода у нее может быть много всяких и разных, в зависимости от .....
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606363
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kХ У вас стандартная задача.
Не надо усложнять.

ИМХО ТС запугали, wewenami2 - возвращайся, но не проси код, а вникай в алгоритм решения, т.е. внимательно перечитай что посоветовали и переспроси что непонятно. Если ничего непонятно - бросай это дело, не подставляй заказчиков.
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606369
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно не ui- кодер. И не знаю как у них там принято. Но кмк это очень популярная задача. И её тылу раз решали в каскадных стилях, грибах и
Layout managers.
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606370
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гридах.

Чортов андроид...
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606413
cronix111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cronix111Еще один заход:

1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника.
2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов.
3. Извлечь квадратный корень из результата a = sqrt(q).
4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a.
5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a).
6. Если ra <= rb, то сторона искомого квадрата x = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a.
7. Иначе x = a - rb/(div(B/b)+1).

Сорри за ошибки.

Еще дополню (умещение квадратов по горизонтали в прямоугольник еще не гарантирует при этом умещения квадратов по вертикали, и наоборот):

8. Если выполнен п. 6., то по горизонтали помещается n = A/x квадратов. А по вертитикали m = N/n ( +1 при rem(N/n)>0).
9. Если m*x > B, то нужно еще раз уменьшить x, чтобы все уместилось и по-вертикали: x = x - (x-rem(B/x)) / (div(B/x)+1).

Тогда весь алгоритм:

1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника.
2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов.
3. Извлечь квадратный корень из результата a = sqrt(q).
4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a.
5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a).
6. x1 = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a.
7. x2 = a - rb/(div(B/a)+1).
8. m = N*x1/A ( + 1, если rem(N*x1/A) > 0).
9. n = N*x2/B ( + 1, если rem(N*x2/B) > 0).
10. Если m*x1 > B, то x1 = x1 - (x1-rem(B/x1)) / (div(B/x1)+1).
11. Если n*x2 > A, то x2 = x2 - (x2-rem(A/x2)) / (div(A/x2)+1).
12. Искомый x = max(x1, x2).
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606417
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Треш какой-то. Любители алгоритмов... почему вы просто не возьмете шапку
Код: plaintext
1.
int GetSquareSize(int rect_wid, int rect_hei, int squre_count)


и не напишете как положено реализацию с проверками условия и т.п.
как нас учили в универах? Почему хотите писать как Кормен или Кнут?
...
Рейтинг: 0 / 0
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
    #39606576
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonТреш какой-то. Любители алгоритмов... почему вы просто не возьмете шапку
Код: plaintext
1.
int GetSquareSize(int rect_wid, int rect_hei, int squre_count)


и не напишете как положено реализацию с проверками условия и т.п.
как нас учили в универах? Почему хотите писать как Кормен или Кнут?

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

Еще есть универсальная ИТ-шная разумная целесообразность
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]