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

Графика: Узор образован 20 вложенными квадратами - C++

Восстановить пароль Регистрация
 
rob777
1 / 1 / 0
Регистрация: 08.12.2011
Сообщений: 78
03.07.2013, 18:33     Графика: Узор образован 20 вложенными квадратами #1
Добрый вечер! На практике дали такое задание.

Начертить узор. Узор образован 20 вложенными квадратами. Стороны первого квадрата параллельны осям координат экрана и равны 60. Вершины каждого последующего квадрата - это точки на сторонах предыдущего квадрата, делящие эти стороны в отношении 1 к 1.

Я изучал только делфи и си не знаю.И написал код на делфи. Мне нужно перевести этот код на си++. Буду благодарен за помощь.

Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
var u:real;
    i,j,x1,y1,r:integer;
    x,y:array[1..4] of integer;
begin
 
 x[1]:=50;
 x[2]:=110;
 x[3]:=110;
 x[4]:=50;
 
 y[1]:=50;
 y[2]:=50;
 y[3]:=110;
 y[4]:=110;
 
with Canvas do
 begin
  moveto(x[4],y[4]);
  for i:=1 to 4 do
  lineto(x[i],y[i]);
  for j:=1 to 30 do
   begin
    x1:=x[1];
    y1:=y[1];
    for i:=1 to 3 do
     begin
      x[i]:=x[i]+round((x[i+1]-x[i])/2);
      y[i]:=y[i]+round((y[i+1]-y[i])/2);
     end;
    x[4]:=x[4]+round((x1-x[4])/2);
    y[4]:=y[4]+round((y1-y[4])/2);
    moveto(x[4],y[4]);
    for i:=1 to 4 do
    lineto(x[i],y[i]);
   end;
  end;
end;
Добавлено через 21 час 3 минуты
Да, кстати, я решил задачку. Вот код может кому поможет. Тему можно закрывать.
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
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        
        //MoveToEx(hdc,125,50,NULL);//Линия
        //LineTo(hdc,175,100);
 
int i,j,x1,y1;
        int x[5]; int y[5];
 x[1]=50;
 x[2]=178;
 x[3]=178;
 x[4]=50;
 
 y[1]=50;
 y[2]=50;
 y[3]=178;
 y[4]=178;
 MoveToEx(hdc,x[4],y[4],NULL);
 for(i=1;i<=4;i++)
 {
     LineTo(hdc,x[i],y[i]);
 }
 for(j=1;j<=29;j++)
 {
    x1=x[1];
    y1=y[1];
    for(i=1;i<=3;i++)
     {
      x[i]=x[i]+((x[i+1]-x[i])/2);
      y[i]=y[i]+((y[i+1]-y[i])/2);
     }
    x[4]=x[4]+((x1-x[4])/2);
    y[4]=y[4]+((y1-y[4])/2);
    MoveToEx(hdc,x[4],y[4],NULL);
    
    for(i=1;i<=4;i++)
    {
    LineTo(hdc,x[i],y[i]);
    }
 }
 
    
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 18:33     Графика: Узор образован 20 вложенными квадратами
Посмотрите здесь:

Воспользуйтесь вложенными циклами C++
Воспользуйтесь вложенными циклами C++
Все возможные a и b по формуле с вложенными циклами C++
C++ Обращение к вложенными структурами
C++ Как сделать так, чтобы функции были не вложенными?
Проблемма с вложенными классами C++
typename. Проблемы с вложенными шаблонными типами C++
Вычислить выражение с вложенными корнями рекурсивно C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru