Economic statistics

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: KMP (Club of young programmers)

Author: Ľuboš Saloky
Program: Ekonom_statistic.pas
File exe: Ekonom_statistic.exe

Economic statistics
{ ekonom_statistic.pas                                              }
{ Ekonomicka statistika.                                            }
{ - usporiadanie podla národného produktu                           }
{ - podla produktu na osobu                                         }
{ - podla poctu obyvatelov                                          }
{ - podla zmeny poctu obyvatelov                                    }
{ - podla rastu národného produktu v 1996                           }
{ - podla prognózy rastu NP v 1997'                                 }
{ - podla inflácie v 1996                                           }
{ - podla odhadu inflácie                                           }
{                                                                   }
{ Author: Ľuboš Saloky                                              }
{ Datum: 01.01.1996                           http://www.trsek.com  }
 
program Ekonomicka_statistika;
uses Crt;
type TStat=record
             Nazov:string[20];
             Mena:string[3];
             HDP,HDPUSD,HDPObyv,PObyv,ZObyv,RHDP1996,RHDP1997,I1996,I1997:real;
           end;
type TUsp=record
            Polozka:real;
            Nazov:string[20];
          end;
var Stat:Tstat;
    FStat:file of TStat;
    Usp:array[0..99] of TUsp;
    Pom:real;
    x,y,pos,PocStat:word;
    s:set of char;
    ch:char;
procedure VypisUdaje(des:word;s1,s2:string);
var Suma,Priemer:real;
begin
  ClrScr;
  Suma:=0;
  for pos:=0 to PocStat-1 do begin
    TextColor(7);write('Stát: ');
    TextColor(14);write(Usp[pos].Nazov);
    GotoXY(26,WhereY);
    TextColor(7);write(s1);
    TextColor(14);write(Usp[pos].Polozka:0:des);
    Suma:=Suma+Usp[pos].Polozka;
    TextColor(7);writeln(s2);
    if pos mod 22=21 then begin
      writeln('Stlac Enter');
      readln;
      ClrScr;
    end;
  end;
  Priemer:=Suma/PocStat;
  TextColor(7);writeln('------------------------------------------------------------');
  if (ch='1') or (ch='3') then write('Spolu:')
                          else write('Priemer');
  GotoXY(26,WhereY);
  TextColor(7);write(s1);
  TextColor(14);
  if (ch='1') or (ch='3') then write(Suma:0:des)
                          else write(Priemer:0:des);
  TextColor(7);writeln(s2);
  writeln('Stlac Enter');
  readln;
end;
BEGIN
{ ----- inicializacia ----- }
  s:=['v','1','2','3','4','5','6','7','8','9'];
  Assign(FStat,'prog1997.dat');
  Reset(FStat);
  PocStat:=filesize(FStat);
{ ----- hlavny cyklus ----- }
  repeat
{ ----- vypis menu ----- }
    ClrScr;
    TextColor(LightBlue);
    writeln('       Vyber si správne písmeno');
    TextColor(LightGray);
    writeln('v - vypis vsetkych státov'#13#10'1 - usporiadanie podla národného produktu'+
            #13#10'2 -              podla produktu na osobu'#13#10'3 -              podla '+
            'poctu obyvatelov'#13#10'4 -              podla zmeny poctu obyvatelov');
    writeln('5 -              podla rastu národného produktu v 1996'#13#10'6 -              '+
            'podla prognózy rastu NP v 1997'#13#10'7 -              podla inflácie v 1996'#13#10+
            '8 -              podla odhadu inflácie v 1997'#13#10'9 - koniec programu');
    writeln;
    TextColor(7);
    repeat
      ch:=ReadKey;
    until ch in s;
    Seek(FStat,0);
    Usp[0].Polozka:=-100000;
{ ----- citanie z datoveho suboru ----- }
    for x:=0 to PocStat-1 do begin
      Read(FStat,Stat);
      case ch of
        '1':Pom:=Stat.HDPUSD;
        '2':Pom:=Stat.HDPObyv;
        '3':Pom:=Stat.PObyv;
        '4':Pom:=Stat.ZObyv;
        '5':Pom:=Stat.RHDP1996;
        '6':Pom:=Stat.RHDP1997;
        '7':Pom:=Stat.I1996;
        '8':Pom:=Stat.I1997;
      end;
      pos:=0;
      while Usp[pos].Polozka>pom do Inc(pos);
      for y:=x downto pos do begin
        Usp[y+1].Polozka:=Usp[y].Polozka;
        Usp[y+1].Nazov:=Usp[y].Nazov;
      end;
      Usp[pos].Nazov:=Stat.Nazov;
      Usp[pos].Polozka:=Pom;
    end;
{ ----- jednotlive sluzby programu ----- }
    case ch of
      'v':begin
            for pos:=0 to PocStat-1 do begin
              Seek(FStat,pos);
              Read(FStat,Stat);
              TextColor(7); write('Názov státu: ');
              TextColor(12);writeln(Stat.Nazov);
              TextColor(7); write('Hruby domáci produkt: ');
              TextColor(12);write(Stat.HDP:0:2);
              TextColor(7); write(' mld. ',Stat.Mena,' = ');
              TextColor(12);write(Stat.HDPUSD:0:2);
              TextColor(7); write(' mld. USD.'#13#10'Na jedného obyvatela: ');
              TextColor(12);write(Stat.HDPObyv:0:0);
              TextColor(7); write(' USD.'#13#10'Pocet obyvatelov: ');
              TextColor(12);write(Stat.PObyv:0:2);
              TextColor(7); write(' mil., predpokladaná zmena ');
              TextColor(12);write(Stat.ZObyv:2:1);
              TextColor(7); write(' % obyvatelov.'#13#10'Rast HDP: 1996 ');
              TextColor(12);write(Stat.RHDP1996:0:1);
              TextColor(7); write(' %, 1997 ');
              TextColor(12);write(Stat.RHDP1997:0:1);
              TextColor(7); write(' %.'#13#10'Inflácia: 1996 ');
              TextColor(12);write(Stat.I1996:0:1);
              TextColor(7); write(' %, 1997 ');
              TextColor(12);write(Stat.I1997:0:1);
              TextColor(7); writeln(' %.');
              writeln('Stlač Enter');
              ReadLn;
            end;
          end;
       '1':VypisUdaje(2,' HDP: ',' mld. USD.');
       '2':VypisUdaje(0,' HDP na obyvateľa: ',' USD.');
       '3':VypisUdaje(2,' Počet obyvateľov: ',' mil.');
       '4':VypisUdaje(1,' Predpokladaná zmena poctu obyv. v r. 1997: ',' %.');
       '5':VypisUdaje(1,' Rast HDP v r. 1996: ',' %.');
       '6':VypisUdaje(1,' Rast HDP v r. 1997: ',' %.');
       '7':VypisUdaje(1,' Predpokladaná inflácia v r. 1996: ',' %.');
       '8':VypisUdaje(1,' Predpokladaná inflácia v r. 1997: ',' %.');
    end;
  until ch='9';
  Close(FStat);
END.