Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 57
1

Графика. Исправить рекурсию треугольника

15.06.2012, 19:54. Показов 1383. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как исправить программу так что бы она рисовало бы только с 3 линиями.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
uses crt, graph;
const y=200;
var gd, gm, tmp:integer;
 
procedure z(x0, x, n:integer; var h:integer);
var h1:integer;
begin
 
  if(n=1) then  begin
    setcolor(8);
    line(x0, y, x+x0, y+x);
    line(x0+x, y+x, x0+2*x, y);
    line(x0, y, x+x0, y-x);
    line(x0+x, y-x, x0+2*x, y);
    setfillstyle(1, 9+(n mod 6));
    floodfill(x0+x,y, 8);
    setcolor(8);
    line(x0, y, x0+2*x, y);
    h:=x;
  end
  else begin
   z(x0, trunc(x/2), n-1, h1);
   z(x0+x, trunc(x/2), n-1, h1);
   z(x0+2*x, trunc(x/2), n-1, h1);
 
    setcolor(8);
    line(x0+h1, y+h1, x+x0+h1, y+x+h1);
    line(x0+x+h1, y+x+h1, x0+2*x+h1, y+h1);
    line(x0+h1, y+h1, 2*x+x0+h1, y+h1);
 
 
    line(x0+h1, y-h1, x+x0+h1, y-x-h1);
    line(x0+x+h1, y-x-h1, x0+2*x+h1, y-h1);
    line(x0+h1, y-h1, 2*x+x0+h1, y-h1);
 
    setfillstyle(1, 9+(n mod 6));
    floodfill(x0+x+h1,y+h1+round(x/2), 8);
    floodfill(x0+x+h1,y-h1-round(x/2), 8);
    h:=h1+x;
   end;
 
end;
 
begin
  initgraph(gd,gm,'');
  z(100,100,  4, tmp);
  readkey;
  closegraph;
end.
Миниатюры
Графика. Исправить рекурсию треугольника  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2012, 19:54
Ответы с готовыми решениями:

Как исправить рекурсию?
Есть метод, смысл которого в том, что он сохраняет и возвращает введенное с клавиатуры нечетное...

Исправить ошибку в коде, реализующем рекурсию
нужно решить такое уравнение: 1)pk=pk-1*x/k; 2)ex=\sum_{k}^{x}pk+1; 3)otvet=x+2+ex мой иекси...

Поиск в ширину - как исправить бесконечную рекурсию?
Привет! Я невеликий знаток питона, но лабу сдать нужно. :( Нужно найти кратчайший путь между двумя...

Графика. Движение треугольника по кругу
1.При запуске программа отрисовывает треугольник, и потом начинает его на экране двигать по кругу...

5
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.06.2012, 21:08 2
Цитата Сообщение от dzev4ono4ka Посмотреть сообщение
что бы она рисовало бы только с 3 линиями.
Что значит с 3 линиями?
При вызове процедуры
Pascal
1
z(100,100,  4, tmp);
меняйте число 4, на 1,2,3....
0
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 57
15.06.2012, 21:36  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
Что значит с 3 линиями?
Это имелось ввиду что в процедура должна рисовать треугольники только тремя линиями, а не таким количеством как у меня.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.06.2012, 21:43 4
Но если при n=1 нужно 5 линий, то как можно нарисовать тремя линиями?

Добавлено через 29 секунд
Это же не просто треугольник, а более сложная фигура...
0
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 57
15.06.2012, 21:52  [ТС] 5
Преподаватель сказал что это довольно простая фигура - вначале нарисовать только половину- простой треугольник с тремя линиями, а что бы была бы целая фигура, потом вторую часть просто надо перевернуть.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.06.2012, 22:15 6
Понятно. Это думать нужно... Но не ночью, как у меня.

Добавлено через 11 минут
Пока могу только подсказать как рисовать ромб.
Объявляем процедуру

Pascal
1
2
3
4
5
6
procedure Trg(x0,x,k:integer);
begin
line(x0, y, x+x0, y+k*x);
line(x+x0, y+k*x,x0+2*x,y);
line(x0, y,x0+2*x,y);
end;
и вызываем ее 2 раза, например
Pascal
1
2
 Trg(100,100,-1);
 Trg(100,100,1);
0
15.06.2012, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2012, 22:15
Помогаю со студенческими работами здесь

Графика: функция рисования равностороннего треугольника
Еще раз добрый вечер. HomeLisp-е написать функцию, запрашивающую у пользователя сторону...

Идентификация треугольника, исправить код
format PE GUI 4.0 include ' include\WIN32AX.INC' .data formats db "%d",0 result db 256 dup(?)...

Инженерная графика - лежит ли точка на плоскости треугольника?
Как определить лежит ли точка на плоскости треугольника?

Графика Pascal ABC: Процедура рисования треугольника
Сама процедура: procedure triangle(x1,y1,x2,y2:integer); begin line(x1,y2,x2,y2);...

Исправить код определения типа треугольника
Разработайте программу, которая вводит длины трёх сторон треугольника и определяет его тип по двум...

Исправить код нахождения площади треугольника
Сгенерируйте исходные данные с помощью встроенных методов класса Random. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru