1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121

Составить рекурсивный алгоритм рисования вложенных квадратов

30.04.2012, 17:04. Показов 2512. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пжл. разобраться в условии задачи.
Составить рекурсивный алгоритм рисования вложенных квадратов. Строится первый квадрат со сторонами параллельными осям координат экрана. Каждая его сторона делится в отношении m=0,09, указывая таким образом на новую вершину. Затем на вновь полученных вершинах строится новый квадрат и т.д.
Строю квадрат со стороной равной 715 пикс. (на моём мониторе - это максимальная высота). Далее 715/0,09=7944,444... . Что я не правильно делаю? Сторона должна быть меньше, а получается ещё больше. Или может нужно построить маленький квадрат и увеличиваться до допустимого разрешения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2012, 17:04
Ответы с готовыми решениями:

Составить рекурсивный алгоритм первых N натуральных чисел
помогите составить рекурсивный алгоритм первых N натуральных чисел

Составить рекурсивный алгоритм нахождения N-го числа Фибоначчи
Составить рекурсивный алгоритм нахождения N-го числа Фибоначчи: 0,1, 1,2,3,5,8.. то есть каждое последующее число равно сумме двух...

Составить рекурсивный алгоритм вычисления суммы элементов массива
Пожалуйста помогите составить алгоритм вычисления суммы элементов массива

5
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
30.04.2012, 18:58
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses graph;
function Kvad(xc,yc,a:integer;ax,ay,bx,by,cx,cy,dx,dy,m:real;n:integer):integer;
begin
if n=0 then Kvad:=0
else
 begin
  line(round(ax),round(ay),round(bx),round(by));
  line(round(bx),round(by),round(cx),round(cy));
  line(round(cx),round(cy),round(dx),round(dy));
  line(round(dx),round(dy),round(ax),round(ay));
  dec(n);
  Kvad:=Kvad(xc,yc,a,ax+(bx-ax)*m,ay+(by-ay)*m,bx+(cx-bx)*m,by+(cy-by)*m,
          cx+(dx-cx)*m,cy+(dy-cy)*m,dx+(ax-dx)*m,dy+(ay-dy)*m,m,n);
 end;
end;
var gd,gm,a,n,xc,yc:integer;
    ax,bx,cx,dx,ay,by,cy,dy,m:real;
begin
gd:=detect;
initgraph(gd,gm,'');
a:=200;
n:=20;
m:=0.09;
xc:=getmaxX div 2;
yc:=getmaxY div 2;
ax:=xc-a;ay:=yc-a;
bx:=xc+a;by:=yc-a;
cx:=xc+a;cy:=yc+a;
dx:=xc-a;dy:=yc+a;
Kvad(xc,yc,a,ax,ay,bx,by,cx,cy,dx,dy,m,20);
readln;
end.
1
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
30.04.2012, 19:59  [ТС]
Puporev, Объясните пожалуйста как так получилось. Я думал здесь просто вложенные квадраты должны быть, а они зигзагом.
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
30.04.2012, 20:12
Цитата Сообщение от Стас45rus Посмотреть сообщение
Каждая его сторона делится в отношении m=0,09, указывая таким образом на новую вершину. Затем на вновь полученных вершинах строится новый квадрат и т.д.
Вроде же все написано...

Добавлено через 43 секунды
Возьми например m=0.5 квадраты будут поворачиваться на 90 градусов.
0
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
30.04.2012, 20:20  [ТС]
Puporev, Хотелось бы по подробней. а то я не понял про это отношение

Добавлено через 4 минуты
а причём здесь поворот?
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
30.04.2012, 21:15
Цитата Сообщение от Стас45rus Посмотреть сообщение
а причём здесь поворот?
Ну так каждый следующий квадрат повернут к предыдущему на какой-то угол, это так, визуально.
А вообще все очень просто. Стороны квадрата делятся в определенном отношении, точки соединяются, получается новый квадрат, затем опять делятся и так заданное число раз.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2012, 21:15
Помогаю со студенческими работами здесь

Составить рекурсивный алгоритм вычсления суммы первых n-натуральных чисел
Составить рекурсивный алгоритм "Вычсление суммы первых n-натуральных чисел."

Построить в центре экрана изображение, которое содержит 10 вложенных квадратов
построить в центре екрана изображение которое содержит 10 вложеных квадратов со сторонами 10,20,30,...,100. закрасить их.

Как составить рекурсивный алгоритм вычисления суммы
Объясните, пожалуйста,по понятному как составить рекурсивный алгоритм вычисления суммы. Можете учебников покидать, только хороших, в...

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

Составить рекурсивный алгоритм проверки симметричности части строки
Помогите, пожалуйста, составить алгоритм проверки симметричности части строки начинающейся i-м и заканчивающейся j-м её элементом. Понятия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Хак домофона или как открыть дверь по номеру
yariko 25.06.2025
Забыли дома ключ. Не проблема. Можно открыть дверь домофона, просто позвонив на свой номер квартиры. Идея состоит в следующем. Внутрь трубки абонента встраивается контроллер, который по звонку сам. . .
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru