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)
Category: Source in Pascal
Program: Terc.pas, Terclight.pas, Terc2.pas
File exe: Terc.exe, Terc2.exe
File ubuntu: Terc
Example: Terc.txt, Terc2.txt
Program: Terc.pas, Terclight.pas, Terc2.pas
File exe: Terc.exe, Terc2.exe
File ubuntu: Terc
Example: Terc.txt, Terc2.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.
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.
{ TERC2.PAS } { } { Author: Quetocek } { Date : 28.02.2006 http://www.trsek.com } Program Terc2; { Vstupne hodnoty Pocet medzikruzi: pocetkruhov=4 Bodove hodnoty v jednotlivych medzikruziach: kruh1=1, kruh2=2, kruh3=3, kruh4=4 Pocet vystrelov: pocetvystrelov=4 Celkovy pocet nastrielanych bodov: pocetbodov=11 } uses Crt; { aby som mohla pouzivat niektore prikazy, napr. ClrScr, ktore patria do tejto kniznice } const { toto su konstanty, ktore som si zadefinovala a ktore sa pocas celeho programu nemenia } pocetkruhov=4; kruh1=1; kruh2=2; kruh3=3; kruh4=4; pocetvystrelov=4; pocetbodov=11; var { toto su premenne, ktore budem pouzivat vo vypocte v programe - pocas programu sa budu menit } pocetrieseni:integer; zasah1,zasah2,zasah3,zasah4:integer; Begin pocetrieseni:=0; { toto je pocitadlo, ktore som na zaciatku vynulovala } ClrScr; { vycisti obrazovku } Writeln('Vstupne hodnoty'); { vypise na obrazovku, vsetko co je napisane v uvodzovkach } Writeln; { bez parametrov vlozi prazdny riadok } Writeln('Pocet medzikruzi: pocetkruhov=4'); Writeln('Bodove hodnoty v jednotlivych medzikruziach: kruh1=1, kruh2=2, kruh3=3, kruh4=4'); Writeln('Pocet vystrelov: pocetvystrelov=4'); Writeln('Celkovy pocet nastrielanych bodov: pocetbodov=11'); Writeln('(pocetvystrelov*kruh1 <= pocetbodov <= pocetvystrelov*kruh4)'); Writeln; Writeln('Vypis rieseni:'); Writeln('(Pocet zasahov do kruhu1-kruhu2-kruhu3-kruhu4)'); { nasleduju vnorene cykly, kde bude priradovat premennym zasah1 az zasah4 hodnoty od 0 do 4 a to tak, ze najprv vsetkym priradi 0 a postupne zvysuje hodnotu az po pocet vystrelov, cim vytvori vsetky kombinacie nehladiac na pocet vystrelov a pocet bodov vo vnutri vnorenych cyklov overujeme ci su splnene 2 podmienky pomocou prikazu if 1.podmienka - ci sedi pocet vystrelov 2.podmienka - ci sedi pocet dosiahnutych bodov ak su obe podmienky splnene, tak zvysi pocitadlo rieseni o 1 a vypise aktualne riesenie } for zasah1:=0 to pocetvystrelov do for zasah2:=0 to pocetvystrelov do for zasah3:=0 to pocetvystrelov do for zasah4:=0 to pocetvystrelov do if (zasah1 + zasah2 + zasah3 + zasah4 = pocetvystrelov) and ((zasah1*kruh1) + (zasah2*kruh2) + (zasah3*kruh3) + (zasah4*kruh4) = pocetbodov) then begin pocetrieseni:=pocetrieseni + 1; Writeln('riesenie ',pocetrieseni,': ',zasah1,'-',zasah2,'-',zasah3,'-',zasah4); end; Writeln; Writeln('Pocet rieseni:',pocetrieseni); { vypise napocitany pocet rieseni } ReadKey; { caka na stlacenie lubovolnej klavesy } End.