![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Lapp |
![]()
Сообщение
#61
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
У меня при N=8 первая комбинация такая получается (скопировал из cmd): Спасибо, Unconnected. Я все никак не мог добраться до машины с ТР.... Угла из скобок нет. +1 тебе. Еще раз спасибо ![]() все, получается. да Так зачем тогда было говорить то, чего нет? ![]() Цитата почему кое-где по одной букве.. она считается за прямоугольник? Конечно. А чем он провинился?.. Не дорос?.. В условии нет границы снизу на размер.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#62
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
потому что сначала не получалось..(
Добавлено через 6 мин. а можно процедуру Put пошагово объяснить, конкретнее,если можно.. ![]() и что такое Inc(k); Добавлено через 1 мин. tRectangle, tLocation это какой-то тип? |
Lapp |
![]()
Сообщение
#63
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
потому что сначала не получалось..( Что не получалось? Так были скобки углом или не были? Как же трудно от тебя получить ответ на простейший вопрос..Цитата а можно процедуру Put пошагово объяснить, конкретнее,если можно.. Можно, конечно. Перечитай пост #45 ( рекурсия- разбиение и сборка квадрата ). Я не хочу копипастить его сюда. Более конкретно - на более конкретные вопросы..Цитата и что такое Inc(k); Inc(x) эквивалентно x:=x+1 .Цитата tRectangle, tLocation это какой-то тип? Да, типы. Смотри программный код, а также пост #6 ( рекурсия- разбиение и сборка квадрата ).-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#64
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
а для чего вот это?
const r0: tRectangle=(a:1; b:1); l0: tLocation=(x: 0; y: 0); что такое r0 и l0? Добавлено через 4 мин. еще хотела спросить, а что делает эта функция function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; begin Overlap:= (Abs(l2.x*2+r2.a-l1.x*2-r1.a) < r1.a+r2.a) and (Abs(l2.y*2+r2.b-l1.y*2-r1.b) < r1.b+r2.b) end; var r: array[1..n*n+10]of tRectangle; l: array[1..n*n+10]of tLocation; s,i,m,k,done: integer; t: tRectangle; u: tLocation; Clear: boolean; Добавлено через 16 мин. function Overlap- эта функция проверяет пересекаются ли прямоугольники? |
Unconnected |
![]()
Сообщение
#65
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата const r0: tRectangle=(a:1; b:1); l0: tLocation=(x: 0; y: 0); Объявление переменных r0 и l0 типами tRectangle и TLocation соответственно (только почему-то он сделал это в секции констант). Сразу же эти переменные инициализируются, т.е. им присваиваются начальные значения (вот эти части: "=(a:1; b:1);=(x: 0; y: 0);"). Цитата еще хотела спросить, а что делает эта функция function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; Ну нифига себе... Мы тут, понимаешь, на первой странице этого топа способы проверки на пересечение двух прямоугольников придумывали, а она и не заметила..)) Цитата var r: array[1..n*n+10]of tRectangle; l: array[1..n*n+10]of tLocation; s,i,m,k,done: integer; t: tRectangle; u: tLocation; Clear: boolean; Секция описания переменных, тут всё должно быть понятно. Сообщение отредактировано: Unconnected - 22.12.2009 22:26 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Екатерина7 |
![]()
Сообщение
#66
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
заметила. а что такое NoOne?
Добавлено через 9 мин. например, вот тут Код begin if y<=n then begin li.x:=x; li.y:=y; NoOne:=true; или тут Код for j:=1 to m do if l[j].x>0 then Clear:=Clear and not Overlap(r[i],li,r[j],l[j]); if Clear then begin Inc(k); l[i]:=li; if k<>m then Put(x mod n+1,y+x div n); l[i]:=l0; Dec(k); NoOne:=false end end; j:=a; a:=b; b:=j; end end; if NoOne then Put(x mod n+1,y+x div n) end end; |
Unconnected |
![]()
Сообщение
#67
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ну, насколько я понял, NoOne - булевая переменная, обеспечивающая условие выхода из рекурсии. Т.е. если рекурсивная функция находит очередной вариант, то рекурсивно вызывается эта же функция с изменёнными параметрами, иначе рекурсия кончается.
Условие выхода из рекурсии: if NoOne then Put(x mod n+1,y+x div n) -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Екатерина7 |
![]()
Сообщение
#68
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
я так поняла, что function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; -функция, которая выдает True, если прямоугольники пересекаются и False,если нет. так? только если честно, этого я в программе не вижу, в смысле где именно это описывается..
Добавлено через 1 мин. ааа.. спасибо большое! Добавлено через 5 мин. можешь еще объяснить хотя бы в кратце, что делает procedure JustSet; {подготовка входных данных} вот тут with t do repeat Добавлено через 1 мин. ![]() |
Lapp |
![]()
Сообщение
#69
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
я так поняла, что function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; -функция, которая выдает True, если прямоугольники пересекаются и False,если нет. так? только если честно, этого я в программе не вижу, в смысле где именно это описывается.. Это не описывается. Это делается внутри самой функции. Алгоритм я подробно объяснил в одном из постов, посмотри выше.Цитата можешь еще объяснить хотя бы в кратце, что делает procedure JustSet; {подготовка входных данных} конечно.Это просто случайный выбор набора прямоугольников с условием, что их суммарная площадь равна площади квадрата (ну и каждая сторона не превосходит стороны квадрата). То, что из них действительно можно составить квадрат - не гарантируется (поэтому название JustSet - ПростоНабор). with t do repeat -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
![]()
Сообщение
#70
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
спасибо всем огромное, кто принимал участие в решении этой задачи!!!
![]() |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 17:36 |