{ HLASUJ.PAS Copyright (c) TrSek alias Zdeno Sekerak } { Program sluzi ako hlasovaci stroj. } { Pri spusteni sa zada tema hlasovania. } { Postupne hlasuju jednotlivy zucastneny. Nakoniec program vyhodnoti} { hlasovanie a zobrazi v peknom kolacovom grafe. } { } { Datum:22.01.2005 http://www.trsek.com } Program Hlasovaci_stroj; uses crt,graph,mycrt; var q:char; { rozluci sa s uzivatelom } procedure Zaver; begin farba(black,lightgray); writeln('Koniec hlasovania'); zvuk(900,300); zvuk(800,200); zvuk(0,0); end; { procedura hlasovania } procedure Hlasovanie; var f:text; i:integer; v:char; tema:string; poc:word; begin clrscr; farba(black,red); writeln; writeln('Zadajte prosim temu hlasovania'); readln(tema); writeln; write('Zadajte pocet osob,ktore budu hlasovat:'); readln(poc); { otvori subor } assign(f,'hlasuj.txt'); rewrite(f); writeln(f,tema); { opyta sa na vsetky hlasy } farba(black,green); for i:=1 to poc do begin writeln('Hlasujuci cislo ',i,' zadaj svoju volbu [a-ano,n-nie,z-zdrziavam sa]:'); { caka pokial nestlaci a,n,z,ESC } repeat v:=UpCase(readkey); until((v='A') or (v='N') or (v='Z') or (v=#27)); { ak nestlacil ESC zapiseme do suboru } if(v<>#27)then writeln(f,v); end; farba(black,red); writeln('Hlasovanie skoncilo.'); close(f); end; { zobrazi graf } procedure Graf(vys1,vys2,vys3:real;tema:string); var st1,st2,st3:integer; begin OpenGraph; { prevod z percent na stupne } st1:=round(3.6*vys1); st2:=round(3.6*vys2); st3:=round(3.6*vys3); { nadpis hlasovania } outtextxy(200,100,'Hlasovanie '+tema); { za } SetFillStyle(BkSlashFill, green); if(st1<>0)then PieSlice(320,240,0,st1,100); { text za - vpravo hore } bar3d(500,20,520,35,0,false); outtextxy(530,25,'Za'); { percenta - vrpavo dole } outtextxy(480,400,' Za: '+Percent(vys1)); { proti } SetFillStyle(SlashFill, red); if(st2<>0)then PieSlice(320,240,st1,st1+st2,100); { text proti - vpravo hore } bar3d(500,40,520,55,0,false); outtextxy(530,45,'Proti'); { percenta - vrpavo dole } outtextxy(480,420,' Proti: '+Percent(vys2)); { zdrzali sa } SetFillStyle(XHatchFill, yellow); if(st3<>0)then PieSlice(320,240,st1+st2,360,100); { text zdrzali sa - vpravo hore } bar3d(500,60,520,75,0,false); outtextxy(530,65,'Zdrzali sa'); { percenta - vrpavo dole } outtextxy(480,440,'Zdrzal: '+Percent(vys3)); { pocka na stlacenie klavesu } outtextxy(100,440,'Pre koniec prezerania stlac '); readln; { zavrie grafiku } CloseGraph; end; { zobrazi vysledok hlasovania } procedure Vysledok; var f:text; v:char; tema:string; v1,v2,v3,poc :word; vys1,vys2,vys3:real; begin zvuk(600,200); zvuk(500,200); zvuk(800,200); zvuk(0,0); { otvori subor } assign(f,'hlasuj.txt'); reset(f); clrscr; { vypise temu } farba(black,red); readln(f,tema); writeln('Hlasovanie o teme: ', tema,'!'); { znulujeme pocitadla } v1:=0; v2:=0; v3:=0; while (not(eof(f))) do begin readln(f,v); if(v='A')then v1:=v1+1; if(v='N')then v2:=v2+1; if(v='Z')then v3:=v3+1; end; { vypocita percenta } poc:=v1+v2+v3; vys1:=((v1/poc)*100); vys2:=((v2/poc)*100); vys3:=((v3/poc)*100); { vypise vysledok } farba(black,white); writeln('Za hlasovalo ', Percent(vys1),' hlasujucich.'); writeln('Proti hlasovalo ', Percent(vys2), ' hlasujucich.'); writeln('Hlasovania sa zdrzalo ', Percent(vys3), ' hlasujucich.'); { pocka na klaves g } textcolor(yellow); writeln; writeln('Pre zobrazenie grafu stlacte klaves g.'); v:=readkey; { zobrazi graf } if(UpCase(v)='G')then Graf(vys1,vys2,vys3,tema); end; BEGIN clrscr; repeat farba(black,red); writeln('Hlasovaci stroj'); farba(black,yellow); writeln('1. Hlasovanie'); writeln('2. Zobraz graf'); writeln('3. Koniec'); q:=readkey; if( q='1') then Hlasovanie; if( q='2') then Vysledok; until(q='3'); Zaver; END.