Program slúži ako hlasovací stroj

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: Programy v Pascale
hlasuj.pngProgram: Hlasuj.pas
Súbor exe: Hlasuj.exe
Potrebné: Egavga.bgiHlasuj.txt

Program slúži ako hlasovací stroj. Pri spustení sa zadá téma hlasovania. Postupne hlasujú jednotlivý zúčastnený. Nakoniec program vyhodnotí hlasovanie a zobrazí v peknom koláčovom grafe.
{ 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 <ENTER>');
  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.