Технический форум
Вернуться   Технический форум > Программирование > Форум программистов


Ответ
 
Опции темы Опции просмотра
Старый 06.02.2010, 07:25   #1 (permalink)
babich
Новичок
 
Регистрация: 06.02.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию C++. Программа реализующая построение

Доброго времени суток!
Имеется вот такая задача:
"Разработать программу, реализующую следующее построение. Строится заполненный круг радиуса R, затем четыре заполненных круга радиуса R/2, которые удалены от цен¬тра исходного круга на расстояние 2R. Этот процесс применяется к каждому кругу и т. д. Выполнить данное построение с помощью рекурсии, глубина которой определяется условием R≥4."
Уже два дня бьюсь, ничего не получается ((
Помогите, пожалуйста! Реализовать решение необходимо на языке C++ в Borland C 3.1 или в Borland C++ Builder 6. Буду рад любым конструктивным предложениям!
babich вне форума   Ответить с цитированием

Старый 06.02.2010, 07:25
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ваша тема по содержанию очень схожа с данными обсуждениями

Построение локальной сети + интернет
Программа для ХР

Старый 06.02.2010, 17:09   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Выкладывайте свой код, посмотрим, разберемся.
Long Cat вне форума   Ответить с цитированием
Старый 07.02.2010, 07:22   #3 (permalink)
babich
Новичок
 
Регистрация: 06.02.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В проекте на C++ Builder 6.0 форма, на которой объект Image с именем Image1 и размерами 500х500. Еще имеется кнопка, при нажатии на которую выполняется следующий код:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int t, a=250, b=250, r=75;
        TCanvas* can = Image1->Canvas;
        can->Ellipse(a+r,b+r,a-r,b-r);
        can->Ellipse(a+r+r+r/2,b+r/2,a+r+r/2,b-r/2);
        can->Ellipse(a-r-r-r/2,b+r/2,a-r-r/2,b-r/2);
        can->Ellipse(a+r/2,b+r+r+r/2,a-r/2,b+r+r/2);
        can->Ellipse(a+r/2,b-r-r-r/2,a-r/2,b-r-r/2);
}
При попытке выделить этот код в отдельную функцию, Image1 с этой функции не виден и, соответственно, ничего не происходит (в смысле выдается ошибка о том, что bcb не в курсе, что такое Image1). Поэтому не могу выполнить условия с рекурсией и так далее.
КАК выделить код в отдельную функцию? И еще был бы рад идеям по поводу того, как находить координаты нарисованных кругов и как их закрашивать.
Функция выглядит вот так:
Код:
void five_range(int a, int b, int r) {
        TCanvas* can = Form1->Image1->Canvas;
        can->Ellipse(a+r,b+r,a-r,b-r);
        can->Ellipse(a+r+r+r/2,b+r/2,a+r+r/2,b-r/2);
        can->Ellipse(a-r-r-r/2,b+r/2,a-r-r/2,b-r/2);
        can->Ellipse(a+r/2,b+r+r+r/2,a-r/2,b+r+r/2);
        can->Ellipse(a+r/2,b-r-r-r/2,a-r/2,b-r-r/2);
        five_range(a+2*r,b+2*r,r/2);
}

Последний раз редактировалось babich; 07.02.2010 в 08:49 Причина: ...
babich вне форума   Ответить с цитированием
Старый 07.02.2010, 13:53   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Рекурсивная функция должна получать координаты, радиус, уровень вложенности и объект, на котором нужно рисовать.
Она должна рисовать одну окружность (самую большую) а затем вызывать себя для рисования всех меньших окружностей.
Long Cat вне форума   Ответить с цитированием
Старый 18.02.2010, 08:05   #5 (permalink)
babich
Новичок
 
Регистрация: 06.02.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Задача сделана и завтра будет сдана, всем спасибо!
babich вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 12.05.2010, 02:29   #6 (permalink)
iluxxxa
Новичок
 
Регистрация: 12.05.2010
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ребята пожалуйста. Нужно написать программу с использованием циклов, без массивов

Ввести с клавиатуры 30 действительных чисел (положительных и отрицательных). Определить максимальную длину положительной подпоследовательности.
iluxxxa вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 00:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.