Zadanie zaliczeniowe nr 7 (2 trymestr), 22 I 2003

Napisz program o nazwie "generuj", ktory na podstawie pliku binarnego
wygeneruje plik tekstowy z kodem zrodlowym programu (w Pascalu),
odtwarzajacego oryginalny plik binarny.

Przykladowo, wykonanie polecenia "generuj zal7.exe gen7.pas" powinno
spowodowac utworzenie pliku "gen7.pas" zawierajacego kod zrodlowy
programu, ktory po skompilowaniu i uruchomieniu utworzy plik o nazwie
"zal7.exe" o zawartosci dokladnie takiej, jak w oryginalnym pliku.

Plik binarny nalezy przetwarzac jak plik bajtow. Dla kazdego z nich
trzeba bedzie wygenerowac instrukcje write, wpisujaca do powstajacego
pliku bajt o wlasciwej wartosci. Wyjatkiem bedzie przypadek wystapienia ciagu
bajtow o takiej samej wartosci. Jesli w takim ciagu beda wiecej niz dwa bajty,
zamiast generowac po jednej instrukcji write dla kazdego z nich, nalezy
wygenerowac petle wypisujaca bajt odpowiednio wiele razy.
Uwaga: jesli ciag bajtow bedzie dluzszy niz maxint, zamiast jednej petli
trzeba wygenerowac ciag petli, z ktorych kazda wypisze maksymalnie maxint
bajtow.

Przyklad:

Na podstawie pliku o nazwie "dane.dat", w ktorym znajduje sie ciag bajtow:

100, 55, 55, 55, 7, 200, 200, ciag bajtow o wartosci 120 dlugosci 32767+10

mozna wygenerowac plik z programem wygladajacym np. tak:

program gen;
var f:file of byte;
    i:integer;
procedure p(b:byte);
begin
  write(f,b)
end;
begin
  assign(f,'dane.dat');
  rewrite(f);
  p(100);
  for i:=1 to 3 do p(55);
  p(7);
  p(200);
  p(200);
  for i:=1 to 32767 do p(120);
  for i:=1 to 10 do p(120);
  close(f)
end.