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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 14:20   #1
CyberGirl
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 11
Радость Отыскание прохода по лабиринту В Delphi

Доброго времени суток!
Помогите написать программу использующую класс, реализующий стек для отыскания прохода по лабиринту. Лабиринт-квадратная матрица из нулей и единиц. (1-есть проход, 0 нет).Начало лабиринта(1,1), конец(n,n). Нужно вывести координаты прохода по лабиринту.
Код:
procedure TForm2.Button1Click(Sender: TObject);
var  a:array[0..100,0..100] of integer;
 n,i,j:integer;
begin
if Edit1.Text='' then
begin

  ShowMessage('Заполните размерность массива');
   exit;
end;
 n:=Strtoint(edit1.Text);
Stringgrid1.ColCount:=n;
Stringgrid1.RowCount:=n;
for i:= 0 to n-1 do
for j:=0 to n-1 do
StringGrid1.Cells[j,i]:=IntToStr(A[i,j]);

end;

procedure TForm2.Button2Click(Sender: TObject);
var a:array[0..100,0..100] of integer;
n,i,j:integer;
begin
if Edit1.Text='' then
begin

  ShowMessage('Заполните размерность массива');
   exit;
end;

n:=Strtoint(edit1.Text);
Stringgrid1.ColCount:=n;
Stringgrid1.RowCount:=n;
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
a[i,j]:=random(2);
 a[0,0]:=1;
 a[n-1,n-1]:=1;
 StringGrid1.Cells[j,i]:=IntToStr(A[i,j]);

end;
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  end;
  type
  pMyType = ^MyType;

 MyType = record
    input: char;
    next: pMyType;
  end;
 type
  MyStack = class
  private
    p, p1, head: pMyType;
    n: integer;
  public
    constructor Create();
    procedure Push(input: char);
    procedure MakeNull();
    function Pop(): char;
    function Top(): pMyType;
    function Empty(): boolean;
  end;


var
  Form1: TForm1;
  MyStack1: MyStack;
implementation

{$R *.dfm}
constructor MyStack.Create();
begin
  n := 0;
end;

procedure MyStack.Push(input: char);

begin
  new(p);
  p^.input := input;
  p^.next := head;
  head := p;
  n := n + 1;
end;

function MyStack.Top;
begin
  result := head;
end;

function MyStack.Pop;
begin
  if Empty() then
    result := #0
  else
  begin
    p := head^.next;
    result := head.input;
    dispose(head);
    head := p;
    n:=n-1;
  end;
end;

procedure MyStack.MakeNull();
begin
  if not Empty() then
  begin
    p := head;
    while p <> nil do
    begin
      p1 := p^.next;
      dispose(p);
      p := p1;
      n := n - 1;
    end;
    head := nil;
  end;
end;

function MyStack.Empty;
begin
  if n = 0 then
    result := true
  else
    result := false;
end;




procedure TForm1.Button1Click(Sender: TObject);
var c: string;
  i: integer;
begin
MyStack1 := MyStack.Create();
  c := Edit1.Text;
  for i := 1 to Length(c) do
  begin
    if c[i] = '#' then
      MyStack1.Pop()
    else if c[i] = '@' then
    begin
      MyStack1.MakeNull();
      break;
    end
    else
      MyStack1.Push(c[i]);
  end;
  c := '';
  for i := 1 to MyStack1.n do
   c := c + MyStack1.Pop;
  Memo1.Lines.Text :=c;
  MyStack1.MakeNull();
end;

end.




end;

Последний раз редактировалось Stilet; 15.03.2011 в 14:36.
CyberGirl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение отцовского пункта выпадающего меню во время прохода по дочерным. Как воплотить? Dim23 HTML и CSS 3 20.03.2010 23:57
С++. Отыскать проход по лабиринту Romer9999 Помощь студентам 1 17.06.2009 23:33
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54