fork download
  1. program ideone;
  2. // Перед вами - WEB-среда разработки PascalABC.NET (версия 1.0, апрель 2011 г.).
  3. // Она основана на современном языке PascalABC.NET, совместимом с Turbo Pascal
  4. // и Delphi Pascal. Программа запускается на сервере, ввод-вывод передается по сети.
  5. // Программу можно опубликовать и ссылаться на нее в Интернете в виде
  6. // http://p...content-available-to-author-only...c.net/WDE/?file=имя_опубликованного_файла.pas
  7. // Зарегистрированные пользователи получают дополнительные возможности:
  8. // долговременное хранение своих программ, возможность работы с папками
  9. var
  10. c,d:integer;
  11.  
  12. procedure P(x,y:integer);
  13. begin
  14. y:=x+1;
  15. end;
  16.  
  17. procedure Q(x:integer; var y:integer);
  18. begin
  19. y:=x+1;
  20. end;
  21.  
  22. // procedure R(var x,y:integer);
  23. // begin
  24. // y:=x+1;
  25. // end;
  26.  
  27. begin
  28. c:=2; d:=0; P(sqr(c)+c,d); writeln(d);
  29. //c:=2; d:=0; Q(sqr(c)+c,d); writeln(d);
  30. //c:=2; d:=0; R(sqr(c)+c,d); writeln(d);
  31. end.
Success #stdin #stdout 0s 5308KB
stdin
unit StackUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TStackForm = class(TForm)
    EditElement: TEdit;
    BtnPush: TButton;
    BtnPop: TButton;
    BtnPeek: TButton;
    MemoStack: TMemo;
    LabelInfo: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BtnPushClick(Sender: TObject);
    procedure BtnPopClick(Sender: TObject);
    procedure BtnPeekClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    Stack: array of Integer;
    procedure UpdateStackView;
  public
    { Public declarations }
  end;

var
  StackForm: TStackForm;

implementation

{$R *.dfm}

procedure TStackForm.FormCreate(Sender: TObject);
begin
  SetLength(Stack, 0);
  UpdateStackView;
end;

procedure TStackForm.FormDestroy(Sender: TObject);
begin
  SetLength(Stack, 0);
end;

procedure TStackForm.BtnPushClick(Sender: TObject);
var
  Element: Integer;
begin
  if TryStrToInt(EditElement.Text, Element) then
  begin
    SetLength(Stack, Length(Stack) + 1);
    Stack[High(Stack)] := Element;
    UpdateStackView;
    LabelInfo.Caption := 'Элемент ' + IntToStr(Element) + ' добавлен в стек';
  end
  else
    LabelInfo.Caption := 'Введите целое число';
end;

procedure TStackForm.BtnPopClick(Sender: TObject);
var
  Element: Integer;
begin
  if Length(Stack) = 0 then
  begin
    LabelInfo.Caption := 'Стек пуст';
    Exit;
  end;

  Element := Stack[High(Stack)];
  SetLength(Stack, Length(Stack) - 1);
  UpdateStackView;
  LabelInfo.Caption := 'Элемент ' + IntToStr(Element) + ' удален из стека';
end;

procedure TStackForm.BtnPeekClick(Sender: TObject);
begin
  if Length(Stack) = 0 then
    LabelInfo.Caption := 'Стек пуст'
  else
    LabelInfo.Caption := 'Верхний элемент: ' + IntToStr(Stack[High(Stack)]);
end;

procedure TStackForm.UpdateStackView;
var
  I: Integer;
begin
  MemoStack.Clear;
  
  if Length(Stack) = 0 then
  begin
    MemoStack.Lines.Add('Стек пуст');
    Exit;
  end;

  MemoStack.Lines.Add('Вершина стека');
  MemoStack.Lines.Add('------------');
  
  for I := High(Stack) downto Low(Stack) do
    MemoStack.Lines.Add(IntToStr(Stack[I]));

  MemoStack.Lines.Add('------------');
  MemoStack.Lines.Add('Основание стека');
end;

end.
stdout
0