1. Naprogramujte
assemblerovú funkciu:
function ZipsK(a,b:byte;
k:byte):word;
Jej výsledkom sú "spojené" vstupy a a b tak, že
prvých k bitov (zdola) je z a, ďalších k bitov je z b,
ďalších k bitov je z a atď. Posledná skupina bitov z
oboch vstupov je prípadne menšia.
Napríklad ak vstupy a a b vyjadríme po bitoch ako:
a7 a6 a5 a4 a3 a2 a1 a0 resp. b7 b6 b5 b4 b3 b2 b1 b0
a k=3, tak výsledné slovo bude takéto:
b7 b6 a7 a6 b5 b4 b3 a5 a4 a3 b2 b1 b0 a2 a1 a0
2. Naprogramujte
assemblerovú funkciu:
type tVysledok = array [0..1000] of ShortInt;
function Porovnaj(a,b:string):tVysledok;
Jej vstupom sú dva reťazce. Môžete predpokladať, že dĺžka
vstupného reťazca nie je väčšia než 1000 znakov.
Výstupné pole tVysledok
obsahuje len znaky 0, 1 a -1 podľa týchto pravidiel:
- 0 na i-tej pozícii znamená, že a[i] = b[i]
- 1 na i-tej pozícii znamená, že a[i] aj b[i]
sú rovnaké písmená anglickej abecedy len
jedno z nich je malé a druhé veľké
- -1 na i-tej pozícii je vtedy, ak neplatí ani jedna
z predošlých podmienok (teda aj pre všetky i ktoré
sú väčšie než dĺžka kratšieho reťazca)
Poznámka: v kóde
ASCII sú malé písmená za veľkými a
rozdiel kódu malého a veľkého písmena je 32
(alebo stačí napísať 'a'-'A').
3. Naprogramujte
assemblerovú funkciu
function SuPodobne(const a,b:string):Boolean;
Jej výsledkom je TRUE práve vtedy ak všetky znaky,
ktoré sú použité v b sa nachádzajú
aj v a a všetky znaky, ktoré sú použité v a sa sa
nachádzajú aj v b.
4. Naprogramujte assemblerovú funkciu:
type SetOfChar = set of Char;
function vOboch(const
a,b:string):SetOfChar;
Výsledkom je množina znakov, ktoré sa
nachádzajú v obidvoch reťazcoch.
Príklad:
vOboch('aabbcd+23','bcde+ab') = ['+','a','b','c','d']