{ PRETEKAR.PAS Copyright (c) Radovan Slavkovsky alias Raistgar} { } { Ide o program, ktorý bol zadaný ako semestrálna práca ku predmetu } { programovanie. } { } { Pretekár dosiahol po niekoľkých pretekoch určitý bodový zisk } {(za každý pretek určitý počet bodov). } { Úloha 1: Vypočítajte programom a zobrazte na obrazovke všetky } { možnosti (kombinácie), ako bolo možné dosiahnuť aktuálny bodový } { zisk z jednotlivých pretekov (nezáleží na poradí). } { Úloha 2: Vypočítajte programom a zobrazte na obrazovke } { najúspešnejšiu možnosť (alebo možnosti), v ktorom (ktorých) získal} { pretekár najväčší počet prvých umiestnení v pretekoch. } { } { Poznámka: Pre každého študenta je pripravené konkrétne zadanie } { s konkrétnymi hodnotami celkového bodového zisku, jednotlivých } { ocenení za konkrétne poradové miesto v pretekoch, počet pretekov, } { ktorých sa pretekár zúčastnil. Riešenie musí zobraziť výstup } { na obrazovke spôsobom, ako ukazuje konkrétne zadanie pre študenta.} PROGRAM XXX; USES crt; VAR m1,m2,m3,m4,m5,z,b:integer; {ciselne premenne } m6,OUT,x:integer; POMOC:ARRAY[1..10]OF integer; {ciselne pole, ktore pomoze porovnat } i,j,k:integer; BEGIN clrscr; WRITELN('PROGRAM: Pretekar'); WRITELN('Riesil : Radovan Slavkovsky'); WRITELN('Zadanie: 129'); WRITELN('Celkovo ziskanych 23 bodov, v 5 zavodoch'); z:=5; { definovany pocet zavodov = 5 } b:=23; { definovany povet ziskanych bodov = 23 } writeln('Bodove ohodnotenie za ziskane umiestnenie'); writeln; writeln('1.miesto = 9 bodov '); writeln('2.miesto = 8 bodov'); writeln('3.miesto = 6 bodov'); writeln('4.miesto = 4 body'); writeln('5.miesto = 2 body'); writeln; FOR m1:= 0 TO 5 DO { hodnota m1-m6=miesto 1-6. nadobuda postupne hodnotu 0 az 5 } FOR m2:= 0 TO 5 DO { hodnoty nadobudaju aj nulovu hodnotu prave preto, ze v moznostiach,} FOR m3:= 0 TO 5 DO { * sa moze objavit i moznost kde pretekar zavod absolvoval bez toho } FOR m4:= 0 TO 5 DO { aby obsadil vsetky pozicie . } { m6 prave preto ze ide v dalsiom ktoru} FOR m5:= 0 TO 5 DO { o nulovu konstantu (nebodove miesto ) } FOR m6:= 0 TO 5 DO IF(m1+m2+m3+m4+m5+m6=z)THEN {podmienka vravi , ze sa sucet 'miest'm1-m6 musi rovnat celkovemu poctu zavodov} IF(9*m1+8*m2+6*m3+4*m4+2*m5+0*m6=b)THEN {podmienka - sucet miest vynasobenych prislusnou hodnotou miesta sa musi } { rovnat celkovemu poctu bodov } { ak su splnene obe podmienky, nasleduje cyklus } BEGIN x:=succ(x); { x nadobuda nasledujucu hodnotu z povodnej } { vypis } writeln('Moznost c.',x,': ',m1,'x, ',m2,'x, ',m3,'x, ',m4,'x, ',m5,'x'); OUT:=m1; { VYVEDENIE posledneho / najvyssieho clena prveho miesta } { pole pomocou cyklu nadobuda postupne hodnoty prveho miesta } POMOC[X]:=M1; END; writeln; write('Celkovy pocet moznosti: ');writeln(x); {vypis poslednej hodnoty x } write('Najviac prvych miest : ');writeln(OUT); {vyvedenie najvyssieho prveho miesta} WRITE('Najlepsia moznost : '); FOR I:= 1 TO X DO { cyklus I, ktory nadobuda hodnotu od 1 po X!, pricom } BEGIN { je stanovena podmienka, pri ktorej pole nadobuda hodnotu } { cyklu postupne, v podmienke je stanovene, ak sa I-ty clen pola } IF(POMOC[I]=OUT)THEN WRITE(I,'. '); { zhoduje s najvyssim prvym miestom, tak sa clen vypise } END; READLN; { program a popis zostavil Radovan Slavkovsky, ( AKA ) Raistgar } END.