Programom zobrazí všetky možnosti (kombinácie), ako bolo možné dosiahnuť aktuálny bodový zisk z jednotlivých pretekov
Delphi & Pascal (česká wiki)
Kategória: KMP (Klub mladých programátorov)
Autor: Radovan Slavkovský
Program: Pretekar.pas
Súbor exe: Pretekar.exe
Autor: Radovan Slavkovský
Program: Pretekar.pas
Súbor exe: Pretekar.exe
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.
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.
{ 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.