Используя 1н просмотр текстового файла , вывести все его строки в порядке увеличения содержания в них цифр (строки должны содержать цифры) — Pascal(Паскаль)

Program Ukazateli;

type
  PNode = ^TNode;

  TList = record
    start, finish: PNode;
  end;

  TNode = record
    n: integer;
    s: string;
    next: PNode;
  end;

procedure AddToList(var L: TList; s: string; digits: integer);
var
  T: PNode;
begin
  new(T);
  T^.next := nil;
  T^.s := s;
  T^.n := digits;
  if L.start = nil then
    L.start := T
  else
    L.finish^.next := T;
  L.finish := T;
end;

function SortList(L: PNode): PNode;
var
  i, j: PNode;
  q: TNode;
begin
  i := L;
  while i <> nil do
  begin
    j := L;
    while j <> nil do
    begin
      if i^.n < j^.n then
      begin
        q := i^;
        i^.n := j^.n;
        i^.s := j^.s;
        j^.n := q.n;
        j^.s := q.s;
      end;
      j := j^.next;
    end;
    i := i^.next;
  end;
end;

procedure PrintList(L: PNode);
begin
  while L <> nil do
  begin
    writeln(L^.s);
    L := L^.next;
  end;
end;

function Count(s: string): integer;
var
  k, i: integer;
begin
  k := 0;
  for i := 1 to Length(s) do
    if s[i] in ['0' .. '9'] then
      inc(k);
  Count := k;
end;

var
  f: text;
  s: string;
  MyList: TList;
  n: integer;

begin
  MyList.start := nil;
  MyList.finish := nil;
  assign(f, 'PFile.txt');
  reset(f);
  while not seekeof(f) do
  begin
    readln(f, s);
    n := Count(s);
    if n > 0 then
      AddToList(MyList, s, n);
  end;
  close(f);
  PrintList(MyList.start);
  readln;
  SortList(MyList.start);
  PrintList(MyList.start);
  readln;

end.

Leave a Comment

20 + = 27