Načítanie údajov o zamestnancoch (meno, priezvisko, plat a odpracované rovky)

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: KMP (Klub mladých programátorov)

Autor: mersi
Program: Zamest.pas
Súbor exe: Zamest.exe

Zostavte program, ktorý bude vykonávať nasledujúce činnosti
- načítanie údajov N zamestnancov (meno, priezvisko, plat a odpracované rovky)
- zistenie priemerného platu
- zistenie najnizšieho a najvyššieho platu
- zistenie priemernej odpracovanej doby v rokoch
- zapísanie zistených údajov do textového súboru ,,vystupy.txt"
{ ZAMEST.PAS                                    Copyright (c) mersi }
{                                                                   }
{ Zostavte program, ktorý bude vykonávať nasledujúce činnosti:      }
{ - načítanie údajov N zamestnancov (meno, priezvisko, plat         }
{   a odpracované rovky)                                            }
{ - zistenie priemerného platu                                      }
{ - zistenie najnizšieho a najvyššieho platu                        }
{ - zistenie priemernej odpracovanej doby v rokoch                  }
{ - zapísanie zistených údajov do textového súboru ,,vystupy.txt"   }
{                                                                   }
{ Author: mersi                                                     }
{ Date  : 11.02.2008                           http://www.trsek.com }
 
program ZAMEST;
uses    Crt;
const   NMAX=120;
type    ZAMESTN=record
          MENO:string;
          PRIEZV:string;
          PLAT:real;
          DOBA:integer;
          end;
 
        ZAMESTNANCI=array[1..NMAX] of ZAMESTN;
var     N,i,C,V:integer;
        ZAM:ZAMESTNANCI;
        PPLAT,PMIN,PMAX,PLATC:real;
        PDOBA,CDOBA:integer;
        SUB:text;
        S:string;
begin
        {Vnulovanie hodnot a obrazovky}
        ClrScr;
        PPLAT:=0;
        PLATC:=0;
        PMIN:=0;
        PMAX:=0;
        PDOBA:=0;
        CDOBA:=0;
 
        {Načítanie počtu nač. zamestnancov}
        Writeln('Zadajte pocet nacitavanych zamestnancov (Maximalne 120): ');
        repeat
                Readln(S);
                Val(S,V,C);
                if (C<>0) or (N<0) or (N>200) then
                        begin
                        Writeln('Zadali ste nespravnu hodnotu: ');
                        Write('Zadajte pocet zamestnancov este raz: ');
                        end;
                N:=V;
 
        until (N>0) and (N<=200) and (C=0);
        for i:=1 to N do
                begin
                        Write('Zadajte meno zamestnanca: ');
                        Readln(ZAM[i].MENO);
 
                        Write('Zadajte priezvisko zamestnanca: ');
                        Readln(ZAM[i].PRIEZV);
 
                        Write('Zadajte plat zamestnanca (musi byt vacsi ako nula): ');
                        {Repeat
                                Readln(S);
                                Val(S,V,C);}
                                Readln(ZAM[i].PLAT);
                                PLATC:=PLATC+ZAM[i].PLAT;
                                if i=1 then PMIN:=ZAM[i].PLAT;
                                if ZAM[i].PLAT<PMIN then PMIN:=ZAM[i].PLAT;
                                if ZAM[i].PLAT>PMAX then PMAX:=ZAM[i].PLAT;
                                {if (V<0) or (C<>0)
                                then
                                        begin
                                        Writeln('Zadali ste nespravnu hodnotu !');
                                        Write('Zadajte plat este raz: ');
                                        end;
                        until (C<>0) or (V>0); }
                        Write('Zadajte pocet odpracovanych rokov: ');
                        Readln(ZAM[i].DOBA);
 
                        CDOBA:=CDOBA+ZAM[i].DOBA;
 
                end;
                PDOBA:=CDOBA div N;
                PPLAT:=PLATC/N;
 
                assign(SUB,'zamestnanci.txt');
                rewrite(SUB);
                for i:=1 to N do
                        begin
                        Writeln(SUB,'Meno: ',ZAM[i].MENO);
                        Writeln(SUB,'Priezvisko: ',ZAM[i].PRIEZV);
                        Writeln(SUB,'Plat: ',ZAM[i].PLAT);
                        Writeln(SUB,'Odpr. roky: ',ZAM[i].DOBA);
                        end;
                Writeln(SUB,'Najnizsi plat: ',PMIN);
                Writeln(SUB,'Najvyssi palt: ',PMAX);
                Writeln(SUB,'Priem. plat: ',PPLAT);
                Writeln(SUB,'Priem. odrp. roky: ',PDOBA);
                Close(SUB);
        Writeln('Pre ukoncenie programu stlacte ENTER !');
        Readln;
end.