Ош1

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
type
 StackException=class(Exception)
 end;
 
  Node = class
  private 
    Data: integer;
    Next: Node;
    constructor Create(aData: integer; aNext: Node);
    begin
    
      Data := aData;
      Next := aNext;
    end;
  end;
  IntStack = class
  private 
    top: Node;
  public 
    procedure Push(d: integer);virtual; 
    begin
     
      top := new Node(d, top);
    end;
    function Pop: integer; virtual;
    begin
      result := top.Data;
      top := top.Next;
    end;
    function Peek: integer; virtual;
    begin
    if top=nil then raise new StackException('Peek:обращение к пустому стеку');
      result := top.Data;
    end;
    procedure Clear; virtual;
    begin
      top := nil;
    end;
    function ToString: string; override;
    var
      t: Node;
    begin
      result := '';
      t := top;
      while t <> nil do
      begin
        result := result + IntToStr(t.Data) + '-';
        t := t.Next;
      end;
      result := result + 'nil';
    end;
  end;

var
  s: IntStack;
  i: integer;




begin
  s := new IntStack;
  writeln(s);
  for i := 1 to 5 do
  begin
    s.Push(random(100));
    writeln(s);
  end;
  writeln(s.Pop);
  writeln(s);
//  try
  s.Clear;
//  i:=StrToInt('abc');
  s.Peek;
//  except
//  on e:stackexception do
  write('ошибка: ');
//end;
end.
uses
  ThorLists, System.Collections.Generic;

function max(xs: List<integer>): integer;
begin
  var m := xs.Item[0];
var _list_1 := xs;
for var _counter_ := 0 to _list_1.Count - 1 do 
  begin
var x := _list_1.Item[_counter_];
if x > m then begin
m := x;
end;
_list_1.Item[_counter_] := x;
end;
result := m; exit;
end;


begin
var x := CreateList(1, 2, 6, -234, 43, 33, 4, 6, 10);
var b := GenerateRange(-20, -15);
var c := Slice(1, 4, x);
writeln(max(x));
writeln(b.Item[3]);
writeln(max(c));
var _list_0 := c;
for var _counter_ := 0 to _list_0.Count - 1 do 
  begin
var t := _list_0.Item[_counter_];
writeln(t);
_list_0.Item[_counter_] := t;
end;
end.