Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ilucky93
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 2
#1

График,используя рекурсию - C++

04.03.2014, 23:13. Просмотров 304. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, с заданием. Нужно нарисовать рисунок, используя рекурсию.
0
Миниатюры
График,используя рекурсию  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 23:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос График,используя рекурсию (C++):

Используя рекурсию вивести групу даних с их индексами не используя масив - C++
Вот мой код на с++ #include<iostream> #include<conio.h> using namespace std; void elementu(int); void main(void){ ...

Используя рекурсию, перемножить 2 натуральных числа не используя операции умножения и иметь логарифмическую сложность - C++
Программа должна перемножать 2 натуральных числа не используя операции умножения и иметь логарифмическую сложность(помогите написать хотя...

Используя только рекурсию - C++
Описать рекурсивную функцию PowerN(x,n) вещественного типа, находящую значение n-й степени числа x по формуле: x0 = 1, xn = x·xn–1 при n >...

Вычислить выражение используя рекурсию - C++
Вычислить выражение в правой части, используя рекурсию. y=cos(x)+cos(2x)+cos(3x)+......cos(nx)

Написать программу используя рекурсию - C++
Написать программу на С++, содержащую рекурсивную функцию определения разбиения целых чисел. Разбиениями целого числа называют способы его...

Расчёт функции используя рекурсию - C++
Доброго времени суток. задали задачку - рассчитать f=y-z/x с использованием рекурсии. даже не придумать с чего начать.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gunslinger
случайный прохожий
1134 / 752 / 192
Регистрация: 20.07.2013
Сообщений: 2,077
05.03.2014, 02:37 #2
Builder (не знаю, как с рекурсией, но в цикле сделать проще):
C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void pen(TColor C)
{
  Form1->Canvas->Pen->Color = C;
}
//---------------------------------------------------------------------------
void brush(TColor C)
{
  Form1->Canvas->Brush->Color = C;
}
//---------------------------------------------------------------------------
void rectangle(int x1, int y1, int x2, int y2)
{
  Form1->Canvas->Rectangle(x1, y1, x2, y2);
}
//---------------------------------------------------------------------------
TColor pixel(int x, int y)
{
  return Form1->Canvas->Pixels[x][y];
}
//---------------------------------------------------------------------------
void draw(int n)
{
  InvalidateRect(NULL, NULL, 1);
  const p = 512;
  int k = 1, i, j, x, y, temp;
  TColor B = clBlack, W = clWhite;
  for (k = 1; k <= n; k++)
  {
    temp = pow(2, k-1);
    for (i = 1; i <= temp; i++)
      for (j = 1; j <= temp; j++)
      {
        x = (i*2-1)*p/temp/2;
        y = (j*2-1)*p/temp/2;
        if (pixel(x, y) == B)
        {
          pen(W);
          brush(W);
        }
        else
        {
          pen(B);
          brush(B);
        }
        rectangle(x, y, i*p/temp, j*p/temp);
      }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Color = clBlack;
  int n = 4;
  draw(n);
  Caption = "Рисунок, n = " + String(n);
}
//---------------------------------------------------------------------------
0
Миниатюры
График,используя рекурсию   График,используя рекурсию   График,используя рекурсию  

ilucky93
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 2
05.03.2014, 22:12  [ТС] #3
к сожалению, сказали решить нужно именно с помощью рекурсивной процедуры(( уже неделю сижу над решением. никак не дойдет((
0
gunslinger
случайный прохожий
1134 / 752 / 192
Регистрация: 20.07.2013
Сообщений: 2,077
06.03.2014, 01:34 #4
Хотя теоретически любой "цикл" можно перевести в рекурсию (и наоборот), тут случай, когда рекурсия "хуже".
Получилось так (пришлось использовать глобальную переменную):
C++
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
33
34
35
36
37
38
39
40
41
42
43
44
//...........................................................................
int tag;
 
void recur_draw(int n)
{
  const p = 512;
  int k, i, j, x, y, temp;
  TColor B = clBlack, W = clWhite;
  if (n <= tag/10 && n > 0)
  {
    k = tag%10;
    temp = pow(2, k-1);
    for (i = 1; i <= temp; i++)
      for (j = 1; j <= temp; j++)
      {
        x = (i*2-1)*p/temp/2;
        y = (j*2-1)*p/temp/2;
        if (pixel(x, y) == B)
        {
          pen(W);
          brush(W);
        }
        else
        {
          pen(B);
          brush(B);
        }
        rectangle(x, y, i*p/temp, j*p/temp);
      }
    tag++;
    recur_draw(tag%10);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  InvalidateRect(NULL, NULL, 1);
  Color = clBlack;
  int n = 4;
  tag = n*10+1;
  recur_draw(n);
  Caption = "Рисунок, n = " + String(n);
}
//---------------------------------------------------------------------------
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2014, 01:34
Привет! Вот еще темы с ответами:

Возведение в степень используя рекурсию - C++
Здравствуйте. Есть программа: int rez(int ch,int st) { if(!st) return 1; else return ch*rez(ch,st-1); }

Вычислить выражение, используя рекурсию - C++
Помогите пожалуйста!! Вообще не понимаю как это сделать.. Вычислить выражение, использую рекурсию:

Вывести последовательность, используя рекурсию - C++
Дана последовательность из N количества элементов. Вывести эту последовательность в обратном порядке, используя рекурсию. Замечание:...

Используя рекурсию распечатать последовательность - C++
Ввести с клавиатуры целое число N. Используя рекурсию, распечатать сначала последовательность, состоящую из N букв 'А', а затем из N...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.03.2014, 01:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru