67 / 67 / 24
Регистрация: 21.11.2008
Сообщений: 226
1

Переполнение стека

19.12.2008, 22:30. Показов 1457. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача стоит такая: Затравочное заполнение 4-х связной гранично определенной области. Алгоритм такой использовал: ставим затравочную точку и проверяем ее четыре соседние точки, если точка не является закрашенной или граничной, то добавляем ее в стек. Во время реализации происходит переполнение стека,Вот Листинг:
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
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
uses graph;
Type ukaz=^tochka;
tochka=record  {Элемент списка-координаты точки}
 x:integer;
 y:integer;
 next:ukaz;
end;
 
var driver,mode:integer;
    x,y,x2,y2,a,b:integer;
    p,hvost,o:ukaz;  {p-голова, hvost-хвост, o-для удаления из головы}
    newcolor,oldcolor,grancolor:integer;
 
begin
randomize;
initGraph(driver,mode,'');
{==========Рисуем 6-ти угольник в случайном месте=====================}
 x:=random(340);
 y:=random(240);
 x2:=x+50;
 y2:=y;
 line(x,y,x2,y2);
 line(x2,y2,x2,y2+30);
 line(x2,y2+30,x2+50,y2+30);
 line(x2+50,y2+30,x2+50,y2+70);
 line(x,y+70,x2+50,y2+70);
 line(x,y,x,y+70);
 
{===============================}
 grancolor:=15; {Цвет границы}
 oldcolor:=0; {Старый цвет};
 newcolor:=Blue; {Цвет закраски}
 
 new(p);  {Помещаем первую затравочную точку}
 p^.x:=x+1;
 p^.y:=y+1;
 hvost:=p;
 a:=p^.x;
 b:=p^.y;
 
  while hvost<>nil do
   begin
    putPixel(a,b,red);
     if (GetPixel(a+1,b)<>grancolor) and (Getpixel(a+1,b)<>newcolor) then
      begin
       new(hvost^.next);
       hvost:=hvost^.next;
       hvost^.x:=a+1;
       hvost^.y:=b;
      end;
 
    if (GetPixel(a-1,b)<>grancolor) and (Getpixel(a-1,b)<>newcolor) then
      begin
       new(hvost^.next);
       hvost:=hvost^.next;
       hvost^.x:=a-1;
       hvost^.y:=b;
      end;
 
    if (GetPixel(a,b-1)<>grancolor) and (Getpixel(a,b-1)<>newcolor) then
      begin
       new(hvost^.next);
       hvost:=hvost^.next;
       hvost^.x:=a;
       hvost^.y:=b-1;
      end;
 
    if (GetPixel(a,b+1)<>grancolor) and (Getpixel(a,b+1)<>newcolor) then
      begin
       new(hvost^.next);
       hvost:=hvost^.next;
       hvost^.x:=a;
       hvost^.y:=b+1;
      end;
 
      o:=p^.next;
      dispose(p);
      p:=o;
 
      a:=p^.x;
      b:=p^.y;
 
 
   end;  {while}
 
 
 
readln;
closeGraph;
end.
Добавлено через 3 часа 11 минут 44 секунды
Никто не знает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2008, 22:30
Ответы с готовыми решениями:

Сортировка методом Хоара, исправить ошибку (переполнение стека, бесконечный цикл)
Сортировка методом Хоара. Нужно первую четверть рассортировать по убыванию, а всё остальное - по...

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

Реализация стека целых чисел. Процедура добавления нового элемента, удаление, вывод стека
Попросили написать программку, но, паскаль очень давно не практикую, поэтому прошу тут: Надо...

создать стек в памяти из этих чисел таким образом, чтобы на вершине стека было самое большое число. Удалить из стека все отрицательные элементы.
Помогите решить. В файл записывается последовательность целых чисел. Прочитать последовательность...

0
19.12.2008, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2008, 22:30
Помогаю со студенческими работами здесь

Содержимое стека 2 дописать в содержимое стека 1. Напечатать полученный стек 1
Program stekk; type stecc=^st; st=record inf:real; link:stecc; end; var i:integer;...

Переполнение
Var z, k, temp, MaxExtended:extended; n, i:integer; Begin k:=13; z:=15; ...

Арифметическое переполнение
Ребят, пишет &quot; Арифметическое переполнение &quot;, в чем ошибка?program lab04;...

Арифметическое переполнение
У меня проблема: все программы выдают арифметическое переполнение. В универе дали методичку...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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