unit zaidimas;

interface
  procedure ejimas (sk: integer; var atsp, vietoj: integer);
    {gavusi skai‡i—, proced—ra palygina j¨ su sugalvotuoju }
    { skai‡iumi ir pasako kiek skaitmen— atsp‚ta ir kiek i˛ j— }
    { yra savo vietose }

implementation

  var ska: string;        { sugalvotas skai‡ius }
      aibe: set of char;  { sugalvoto skai‡iaus skaitmen— aib‚ }
      skt: longint;       { sp‚jim— skai‡ius }

  procedure ejimas (sk: integer; var atsp, vietoj: integer);
    var s: string; { sp‚jamas skai‡ius, paverstas eilute }
        i: integer;
  begin
    skt := skt + 1;
    if skt = 100    { jei vir˛ijamas sp‚jimo limitas }
       then begin
              writeln ('Vir˛ytas sp‚jim— limitas - 100');
              halt
            end;
    if (sk < 1000) or (sk > 9999)
       then begin
              write ('Bandyta sp‚ti ne ketur‘enkl¨ skai‡i—: ');
              writeln (sk);
              halt
            end;
    str (sk, s);  { bus papras‡iau lyginti dvi eilutes }
    if s = ska    { jei skai‡ius atsp‚tas }
       then begin
              writeln ('Atsp‚ta per ', skt, ' kartus.');
              halt
            end
    else begin  { rasime kiek skaitmen— savo vietoje ir kiek atsp‚ta }
           vietoj := 0;
           for i := 1 to 4 do
               if s[i] = ska[i]
                  then vietoj := vietoj + 1;
           atsp := 0;
           for i := 1 to 4 do
               if s[i] in aibe
                  then atsp := atsp + 1
         end;
  end; { ‚jimai }

  var reiksme, kl_kodas, elem_sk: integer;
      c: char;
begin
  writeln ('Tai yra demonstracinis modulis.');
  writeln ('Sugalvokite ketur‘enkl¨ skai‡i— patys: ');
  readln (ska);
  reiksme := 0; { ¨vestas skai‡ius ver‡iamas simboli— eilute }
  val (ska, reiksme, kl_kodas);
  if (kl_kodas <> 0)  or   { jei skai‡ius ¨vestas klaidingai }
     (reiksme < 1000) or (reiksme > 9999)
     then begin
            writeln ('Sugalvojote ne ketur‘enkl¨ skai‡i—.');
            halt
          end;
  aibe := [ska[1]] + [ska[2]] + [ska[3]] + [ska[4]];
  elem_sk := 0;
  for c := '0' to '9' do
      if c in aibe
         then elem_sk := elem_sk + 1;
  if elem_sk <> 4
     then begin
            writeln ('Skai‡iaus skaitmenys turi b–ti skirtingi.');
            halt
          end;
end.

