Oblastní kolo soutěže v programování (1997)

Zadání úloh oblastního kola
Soutěže dětí a mládeže v programování 1997

Kategorie vyšší programovací jazyky mládež a starší žáci

Následující úlohy můžete řešit v libovolném pořadí. Body získané za každou úlohu se násobí koeficientem, který je u každé úlohy uveden a vyjadřuje její obtížnost. Za jednu úlohu můžete získat maximálně 10 bodů (před násobením koeficentem); z toho je 6 bodů určeno na ohodnocení funkčnosti, 3 body na efektivitu řešení a zbývající jeden bod slouží k ohodnocení dokumentace a přehlednosti odevzadaného zdrojového textu programu. Na řešení úloh máte 4 hodiny čistého času.

1. Bludiště

Napiště program, který bude sloužit k hledání cesty bludištěm. Program bude mít jeden parametr, kterým bude jméno textového souboru s popisem bludiště.

Bludiště bude uloženo v obyčejném textovém souboru. Znakem mezera (kód 32) budou vyznačeny chodby a znakem s kódem 177 budou vyznačeny zdi. V souboru s popisem bludiště budou kromě chodeb a zdí umístěny dvě značky, které budou označovat začátek a konec bludiště. Na místě začátku bude písmeno 'Z' a na konci bludiště 'K'.

Maximální rozměry bludiště jsou 80 x 25 znaků.

Program v zadaném bludišti musí nalézt nejkratší cestu mezi body Z a K a vyznačit ji. Cesta přitom může vést pouze chodbami. Procházení zdí nebo obcházení bludiště není dovoleno.

Ukázková bludiště jsou uložena v souborech blud1.txt, blud2.txt, blud3.txt a blud4.txt v adresáři BLUDISTE. V tomto adresáři je rovněž ukázkový program.

Koeficient: 3

2. HexView

Napište program, který zobrazí obsah libovolného soubor o maximální velikosti 32kB v hexadecimálním kódu. Zároveň bude zobrazovat pozici v souboru a odpovídající znaky. Řídící znaky (s kódem 0-31) budou zobrazeny jako tečka. Název souboru se zadá jako parametr programu na příkazové řádce. K posunu prohlíženého souboru o jednu řádku slouží ENTER a k posunu o celou obrazovku mezerník. Kromě toho je možné se po souboru pohybovat kurzorovými klávesami a klávesami PgUp a PgDn v obvyklém významu. Klávesou ESC se program ukončí.

Program je rovněž možno napsat tak, že kódy jednotlivých znaků budou zobrazovány v desítkové místo šestnáctkové soustavě. V tomto případě však ztratíte 10 % bodů.

V adresáři HEXVIEW je ukázkový program.

Koeficient: 1

3. Analýza obrázku

V souborech OBRAZ0.XXX, OBRAZ1.XXX, OBRAZ2.XXX v adresáři OBRAZ jsou ulozeny černobílé obrázky na nichž jsou namalovány křížky a kolečka. Křížky a kolečka se nepřekrývají ani se nedotýkají okraje obrazovky. Obrazovka byla do souboru ulozena procedurou pis:
  procedure pis;
  type radek=array[0..325] of byte;
  var i:integer;
      r:radek;
      F:file of radek;
  begin;
    assign(f,'OBRAZ.xxx');rewrite(f);
    for i:=0 to 479 do 
    begin
      getimage(0,i,639,i,r);
      write(f,r);
    end;
    close(f);
  end;
Vypracujte program pro zjistění počtu koleček a počtu křížků. Soubor s obrázkem bude programu předán jako parametr z příkazové řádky.

Koeficient: 2