Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 21.09.2018
Сообщений: 1

Рекурсивная функция для фрактального дерева (на Си)

28.05.2019, 19:38. Показов 1016. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать рекурсивную функцию для фрактального дерева на C .Есть код но дальше не могу:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <windows.h>
#include <math.h>
#define pi 3,1415926535
void MyGraph (HWND hwnd);
/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch(Message) {
        
        /* Upon destruction, tell the main thread to stop */
        case WM_DESTROY: 
        {
            PostQuitMessage(0);
            break;
        }
        case WM_PAINT:
        {
            MyGraph(hwnd);
            break;
        }
        
        /* All other messages (a lot of them) are processed using default procedures */
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
 
/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; /* A properties struct of our window */
    HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    MSG Msg; /* A temporary location for all messages */
 
    /* zero out the struct and set the stuff we want to modify */
    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc; /* This is where we will send messages to */
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    
    /* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */
 
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        1600, /* width */
        900, /* height */
        NULL,NULL,hInstance,NULL);
 
    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    /*
        This is the heart of our program where all input is processed and 
        sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
        this loop will not produce unreasonably high CPU usage
    */
    while(GetMessage(&Msg, NULL, 0, 0) > 0) { /* If no error is received... */
        TranslateMessage(&Msg); /* Translate key codes to chars if present */
        DispatchMessage(&Msg); /* Send it to WndProc */
    }
    return Msg.wParam;
}
 
void MyGraph(HWND hwnd)
{
    PAINTSTRUCT ps;
    HDC hdc;
    HPEN hPen;
    int N=2,x1=800,y1=800,x2=700,y2=600,x3=900,y3=500,sin_a,cos_a;
    sin_a=60*pi/180;
    cos_a=45*pi/180;
    hdc=BeginPaint(hwnd, &ps);
    
    hPen=CreatePen(PS_SOLID,3,RGB(0,255,0));
    
    SelectObject(hdc,hPen);
    
    void tree(int N,int x1,int y1,int x2,int y2,int x3,int y3,int cos_a,int sin_a)
    {
      int xc1,yc1,xc2,yc2,xc3,yc3;
        if (N==0) 
        {
        return;
        }
        MoveToEx(hdc,x1,y1,NULL);
          LineTo(hdc,x1,y2);
        MoveToEx(hdc,x1,y2,NULL);
          LineTo(hdc,x2,y3);
        MoveToEx(hdc,x1,y2,NULL);
          LineTo(hdc,x3,y3);
        
      return tree(N-1,x1,y1,x2*cos_a,y2*sin_a,x3*cos_a,y3*sin_a,sin_a,cos_a);
    }
    tree(N,x1,y1,x2,y2,x3,y3,sin_a,cos_a);
    DeleteObject(hPen);
    
    
    
    
    
    
    EndPaint(hwnd, &ps);
}
Название: unRi6AiYqCo.jpg
Просмотров: 81

Размер: 11.3 Кб
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2019, 19:38
Ответы с готовыми решениями:

Рекурсивная функция для вычисления выражения - исправить код
Условия задачи: Пусть x1=x2=x3=1; xi=xi-1+xi-3, i=4,5... Никак не получается сделать рекурсию, сделал только решение этой задачи через...

Прокомментировать код фрактального дерева
Этот код создания фрактального дерева ... Помогите пожалуйста разобраться ... За что отвечает переменная l и для чего нужна р program...

Пошаговая постройка фрактального дерева
Задача стоит такая: 1) нарисовать фрактальное дерево; 2) при нажатии на кнопку пользователь разрешает приступить к следующему этапу...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2019, 19:38
Помогаю со студенческими работами здесь

Нужно разобраться в коде фрактального дерева
Вот сам код: #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;glut.h&gt; #define ANGLE 0.6 // ugol #define...

"Рекурсивная функция" (Обход бинарного дерева)
Привет всем, встретился с такой рекурсивной ф-ей, которая обходит бинарное дерево и выводит его на экран. Не могу понять как она работает ...

Рекурсивная функция у меня другая но только не рекурсивная
Добрый день все ! Писал я про задачку но так и не кто откликнулся напомню о чем речь &quot; Добрый день форумчане! Мне...

Рекурсивная функция для нахождения НОД
Необходимо описать рекурсивную функцию GOD(A,B) целого типа, находящую наибольший общий делитель (НОД, greatest common divisor) двух целых...

Рекурсивная функция для определения палиндромов
Нужно написать программу , которая с помощью рекурсивной функции определяет, является ли строка палиндромом (радар, потоп, т.е. слова...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru