Program zistí akými kombináciami zásahov do terča sa dá dosiahnuť požadovaný počet bodov Z v pascale

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: Programy v Pascale

Program: Terc.pasTerclight.pasTerc2.pas
Súbor exe: Terc.exeTerc2.exe
Súbor ubuntu: Terc
Príklady: Terc.txtTerc2.txt

Program zistí akými kombináciami zásahov do terča sa dá dosiahnuť požadovaný počet bodov Z. Určí všetky vektory P ( P[1] .. P[M] ) a počet zásahov do medzikružia. Nakoniec vypíše všetky možné riešenia a ich počet (0, 1, 2, …). Podrobný postup riešenia nájdete v Terc.txt.

Ako všade aj tu platí že sa dá naprogramovať jednodušia verzia TercLight.pas ktorá ale nieje taká výkonná.

Nakoniec ešte uverejňujem verziu Terc2.pas od prispievateľky s nickom Quetocek. Vďaka nej je k dispozícii aj dokumentácia.
Postup riešenia:
 
- Znulujem vektor výstrelov vv a na prvú pozíciu dám celkový počet nastrieľaných bodov z.
- V cykle postupne generujem jednotlivé kombinácie výstrelov funkciou DalsiVektor.
- Po vygenerovaní zistím ži počet nastrieľaných bodov je požadovaný (premená z)
- Ak je to potrebný počet bodov, vypíšem tento vektor na monitor a zväčším premenú poc.
- Nakoniec vypíšem premenú poc čo je celkový počet vektorov. 
 
Popis funkcie DalsiVektor:
Funkcia sa nezaoberá posledným číslom vektora. Toto číslo vždy dopočíta.
Takže najprv nájde posledné číslo ktoré je nenulové. Od tohoto čísla odpočíta 1 a 
do ďalšieho čísla dá všetky ostatné výstrely ktoré mu tak ostali.
 
Príklad pred:
4 1 0 0
 
Príklad po:
3 2 0 0
 
Takto postupuje až pokial sa nestane že na prvej pozícii je nula a vtedy končí, 
pretože vyčerpal všetky možnosti.