nazad

Zadatak 1.


type
  TMat = array[1..100,1..100] of integer;

const
  ip : array[1..8] of integer = ( 0, 1, 1, 1, 0,-1,-1,-1);
  jp : array[1..8] of integer = ( 1, 1, 0,-1,-1,-1, 0, 1);

var
  a : TMat;
  n, m : integer;
  rez : real;

procedure Ucitaj;
var
  i, j : integer;
  f : Text;
begin
  Assign(f,'zad1.in');
  Reset(f);
  ReadLn(f,n,m);
  for i := 1 to n do
    for j := 1 to m do
      Read(f,a[i,j]);
  Close(f);
end;

procedure Stampaj;
var
  f : Text;
begin
  Assign(f, 'zad1.out'); Rewrite(f);
  WriteLn(f,rez:8:2);
  Close(f);
end;

function moze(i, j : integer) : boolean;
begin
  moze := (1 <= i) and (i <= n) and (1 <= j) and (j <= m);
end;

procedure odredi(x,i,j : integer;var p,q : integer);
begin
  p := 0; q := 0;
  if moze(i,j) then
    begin
      p := 1;
      if (x > a[i,j]) then q := 1;
    end;
end;

procedure Resi;
var
  i, j, k, p, q, s, b : integer;
  suma, br : integer;
begin
  suma := 0; br := 0;
  for i := 1 to n do
    for j := 1 to m do
      begin
        s := 0; b := 0;
        for k := 1 to 8 do
          begin
            odredi(a[i,j],i+ip[k],j+jp[k],p,q);
            s := s + p;
            b := b + q;
          end;
        if (b/s >= 0.5) then
          begin
            suma := suma + a[i,j];
            br := br + 1;
          end;
      end;
  if br > 0 then rez := suma / br
  else rez := 0;
end;

begin
  Ucitaj;
  Resi;
  Stampaj;
end.

Zadatak 2.


type
  TNizS = array[1..1000] of string;

var
  rec : TNizS;
  s : string;
  n, i, j, br : integer;
  f, g : Text;

function Palindrom(s : string) : boolean;
var
  i, d : integer;
  p : boolean;
begin
  p := True;
  d := Length(s);
  i := 1;
  while p and (i <= d div 2) do
    if (s[i] <> s[d+1-i]) then p := False
    else i := i+1;
  Palindrom := p;
end;

function BezBlanko(s : string) : string;
var
  i : integer;
  r : string;
begin
  r := '';
  for i := 1 to Length(s) do
    if s[i]<>' ' then r := r + s[i];
  BezBlanko := r;
end;

begin
  Assign(f,'zad2.in'); Reset(f);
  Assign(g,'zad2.out'); Rewrite(g);
  ReadLn(f,n);
  br := 0;
  for i := 1 to n do
    begin
      ReadLn(f,s);
      if Palindrom(BezBlanko(s)) then
        begin
          br := br + 1;
          rec[br] := s;
        end;
    end;
  for i := 1 to br - 1 do
    for j := i + 1 to br do
      if (length(rec[i]) > length(rec[j])) or ((length(rec[i])=length(rec[j]))and(rec[i]>rec[j])) then
        begin
          s := rec[i]; rec[i] := rec[j]; rec[j] := s;
        end;
  for i := 1 to br do
    WriteLn(g,rec[i]);
  Close(f); Close(g);
end.

Zadatak 3.


type
  PSlog = ^TSlog;
  TSlog = record
            info : longint;
            sled : PSlog;
          end;

var
  koren, pom : PSlog;
  f : file of longint;
  g : Text;
  n, i, x, brojac: longint;

procedure Dodaj(x : longint; var koren : PSlog);
var
  pom, pret, novi : PSlog;
begin
  brojac := 0;
  new(novi); novi^.info := x; novi^.sled := nil;
  if (koren = nil) or (x <= koren^.info) then
    begin
      novi^.sled := koren;
      koren := novi;
    end
  else
    begin
      pom := koren;
      pret := nil;
      while (brojac <= n) and (pom <> nil) and (x > pom^.info) do
        begin
          brojac := brojac+1;
          pret := pom;
          pom := pom^.sled;
        end;
      if (brojac <= n) then
        begin
          novi^.sled := pom;
          pret^.sled := novi;
        end;
    end;
end;

begin
  Assign(f,'zad3.in'); Reset(f);
  Assign(g,'zad3.out'); Rewrite(g);

  Read(f,n);
  koren := nil;

  while (not eof(f)) do
    begin
      Read(f,x);
      Dodaj(x, koren);
    end;
  i := 1;
  pom := koren;
  while i < n do
    begin
      pom := pom^.sled;
      i := i+1;
    end;
  WriteLn(g,pom^.info);
  Close(f); Close(g);
end.

Top