Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2017, 17:29   #1
trofchik
Новичок
Джуниор
 
Регистрация: 30.11.2017
Сообщений: 2
По умолчанию [Pascal abc] Заливка матрицы цветом выбранного элемента.

Выдаёт ошибку в функции Point: x не объявле в типе function(x: integer; y: integer).

Код:
type TPoint = record
     x, y: integer;
     end;
     
     TQueue = record
     data: array of integer;
     size: integer;
     end;
     
function Empty(q: TQueue): boolean;
begin
  Empty := (q.size = 0);
end;

function Point(x,y: integer): TPoint;
begin
  Point.x := x;
  Point.y := y;
end;

procedure Put(var q: TQueue; p: TPoint);
begin
  if q.size > high(q.data) 
  then setLength(q.data, length(q.data) + 10);
  q.data[q.size] := p;
  q.size := q.size + 1;
end;

function Get(var q: TQueue): TPoint;
var i: integer;
begin
  get := q.data[0];
  q.size := q.size - 1;
  for i := 0 to q.size - 1 do
    q.data[i] := q.data[i + 1];
end;

const
  xmax = 5; ymax = 5;
  newcolor = 2;
  
var
  q: TQueue;
  x0, y0, x, y, color: integer;
  a: array[1..xmax, 1..ymax] of integer;
  p: TPoint;

begin
  for y := 1 to 5 do
    for x := 1 to 5 do
      a[x, y] := random;
  x0 := 2; y0 := 1;
  color := a[x0, y0];
  Put(q, Point(p));
  while not Empty(q) do begin
    p := Get(q);
    if a[p.y, p.x] = color 
    then begin
      a[p.y, p.x] := newcolor;
      if p.x > 1    then Put(Q, Point(p.x - 1, p.y));
      if p.x < xmax then Put(Q, Point(p.x + 1, p.y));
      if p.y > 1    then Put(Q, Point(p.x, p.y + 1));
      if p.y < ymax then Put(Q, Point(p.x, p.y - 1));
    end;
  end;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 30.11.2017 в 17:41.
trofchik вне форума Ответить с цитированием
Старый 30.11.2017, 17:51   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

раз:

Код:
function Point(x,y: integer): TPoint;
var r : TPoint;
begin
  r.x := x;
  r.y := y;
  Point := r;
end;
два:
Код:
     TQueue = record
      data: array of TPoint;
      size: integer;
     end;
три:
Код:
      a[x, y] := random(5)+1; // или сколько там надо!

четыре:
Код:
  Put(q, Point(x0, y0)); // это я не понял, сами разбирайтесь
пять:
Код:
function Get(var q: TQueue): TPoint;
var i: integer;
  temp : TPoint;
begin
  temp := q.data[0];
  q.size := q.size - 1;
  for i := 0 to q.size - 1 do
    q.data[i] := q.data[i + 1];
  Get := temp;  
end;
ну а дальше сами попробуйте...

Последний раз редактировалось Serge_Bliznykov; 30.11.2017 в 17:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2017, 17:59   #3
trofchik
Новичок
Джуниор
 
Регистрация: 30.11.2017
Сообщений: 2
По умолчанию

Спасибо, будет над чем подумать
trofchik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заливка цветом фигуры kovich7 Microsoft Office Excel 2 26.05.2016 15:13
Заливка некоторой области цветом Devdev12 C# (си шарп) 2 18.08.2013 13:57
Function нахождения максимального элемента матрицы (дописать в программу) Pascal ABC программирование Помощь студентам 10 05.06.2013 23:18
заливка цветом строк ivan52agronom Microsoft Office Excel 12 13.02.2010 23:10
Заливка определённым цветом? M17 Microsoft Office Excel 2 03.04.2009 12:45