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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.85
Ваня
Сообщений: n/a
#1

Дерево Пифагора - C++

18.02.2007, 03:37. Просмотров 5861. Ответов 1
Метки нет (Все метки)

Дерево Пифагора
Пифагор, доказывая свою знаменитую теорему, построил фигуру, где на сторонах прямоугольного треугольника расположены квадраты. В наш век эта фигура Пифагора выросла в целое дерево. Впервые дерево Пифагора построил А.Е. Босман (1891-1961) во время Второй Мировой войны, используя обычную чертежную линейку.
Как строится дерево Пифагора понятно из рисунка.

Приведу программу для построения, написанную на языке Pascal. Только она не запускается. Я ее скачал на сайте.
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
Program Pif;
Uses CRT, Graph;
Procedure Draw(x, y, l, a: Real);
Procedure Rect(x1, y1, l: Integer; a1: Real);
Begin
  MoveTo(x1, y1);
  LineTo(x1+Round(l*cos(a1)), y1-Round(l*sin(a1)));
  LineTo(x1+Round(l*sqrt(2)*cos(a1+pi/4)), 
         y1-Round(l*sqrt(2)*sin(a1+pi/4)));
  LineTo(x1+Round(l*cos(a1+pi/2)), y1-Round(l*sin(a1+pi/2)));
  LineTo(x1, y1);
End;
Begin
  If l;4 Then Begin
    Rect(Round(x), Round(y), Round(l), a);
    Draw(x-l*sin(a), y-l*cos(a), l/sqrt(2), a+pi/4);
    Draw(x-l*sin(a)+l/sqrt(2)*cos(a+pi/4), 
         y-l*cos(a)-l/sqrt(2)*sin(a+pi/4), l/sqrt(2), a-pi/4);
  End;
End;
 
Var
  gd, gm: Integer;
Begin
  gd:=detect;
  InitGraph(gd, gm, 'c:\bp\bgi');
  Draw(280, 460, 100, 0);
  ReadKey;
  CloseGraph;
End.
Как гласит учитель рекурсия будет происходить под углом. Для этого он посоветовал матрицу вращения. Вот формулы:

Вот что я смог на сегодняшний день соорудить на Borland 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
#include iostream.h;
#include conio.h;
#include stdlib.h;
#include graphics.h;
#include math.h;
//void pifagor(int, int, int, int, int, int, int, int, int);
void main(void)
{
  const int M=4, N=3, K=3;
  int a[M][N], b[N][K], c[M][K];
  clrscr(); // randomize();
  int i, j, p;
  int w=3.14/4, x0=340, y0=440, x1=300, y1=480, x2=300, y2=440, x3=340, y3=440, x4=340, y4=480;
 
  int gd=DETECT, gm;
  initgraph(&gd, &gm, "C:\\BC31\BGI");
 
   //  pifagor(300, 480, 300, 440, 340, 440, 340, 480, 10);
 
   a[0][0]=x1;
   a[0][1]=y1;
   a[0][2]=1;
   a[1][0]=x2;
   a[1][1]=y2;
   a[1][2]=1;
   a[2][0]=x3;
   a[2][1]=y3;
   a[2][2]=1;
   a[3][0]=x4;
   a[3][1]=y4;
   a[3][2]=1;
 
   b[0][0]=cos(w);
   b[0][1]=sin(w);
   b[0][2]=0;
   b[1][0]=-sin(w);
   b[1][1]=cos(w);
   b[1][2]=0;
   b[2][0]=-x0*(cos(w)-1)+y0*sin(w);
   b[2][1]=-x0*sin(w)-y0*(cos(w)-1);
   b[2][2]=1;
 
 
 
   for(i=0; i=M-1; i++)
   {
     for(j=0; j=K-1; j++)
     {
       c[i][j]=0;
       {
     for(p=0; p=N-1; p++);
     {
        c[i][j]=c[i][j]+a[i][j]*b[p][j];
        coutc[i][j];
     }
     // cout'\t';
       }
     cout'\n';
     }
 
   }
 
  getch();
  closegraph();
}
Я думаю дальше надо составить функцию rotate от угла поворота w и от массива с[i][j]
rotate(w, c).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2007, 03:37     Дерево Пифагора
Посмотрите здесь:

Теорема Пифагора - C++
Составить программу,которая графически иллюстрирует теорему Пифагора.

Теорема Пифагора - C++
Здравствуйте, программа всякий раз выводит в ответе "0". В чём ошибка? Благодарен! Язык C++, Visual C++ 2008 Express #include...

Вывести таблицу Пифагора - C++
как в С++ создать таблицу пифогора, с помощью столбец и строк....я сама не поняла :( можно код?

Сформировать таблицу Пифагора - C++
Опишите пожалуйста код. Что делает каждая строчка кода? И как сделать схему алгоритма для этого кода. #include<conio.h> ...

Таблица Пифагора через динамические масивы - C++
НЕ могу понять динамические масивы. Объясните как этот код работает. Вот пишу пример с книги. // таблица Пифагора #include...

напечатать все числа Пифагора меньшие N - C++
помогите плиз. Натуральные числа a,b,c называются числами Пифагора, если выполняеться условие a2+b2=c2. напечатать все числа Пифагора...

Бинарный поиск с соблюдением теоремы Пифагора - C++
Всем привет. На input подается число (s), которое является суммой чисел a, b, c, которые предстоит найти. Условие следующее: ...

Вывести квадрат Пифагора (таблицу умножения) - C++
Помогите создать программу, в программирование нечего не понимаю! Задание: Напишите программу, которая выводит на экран квадрат...

Написать программу вывода на экран таблицы Пифагора - C++
Помогите написать программу вывода на экран таблицы Пифагора

Вывести на экран квадрат Пифагора — таблицу умножения - C++
1. Написать программу, которая выводит на экран квадрат Пифагора — таблицу умножения. 2. Задан числовой массив А. Составить программу...

Проблемы с задачей! (вывести на экран квадрат Пифагора - таблицу умножения) - C++
Помогите с задачей! Надо: 1)Обязательно цыкл for. 2)Cout/cin должны быть. 3)И подробно обьясните что к чему... Цыклы очень тяжко...

Составить программу, выводящую на экран квадрат Пифагора - таблицу умножения. - C++
Составить программу, выводящую на экран квадрат Пифагора - таблицу умножения. Рекомендуемый вид экрана программы приведен ниже. 1 2 3 4...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Цербер
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 183
19.02.2007, 12:48     Дерево Пифагора #2
Извините, я не вижу ни рисунка, ни формул. Положите ссылку, если они лежат где-то еще.
Ответ Создать тему
Опции темы

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