Дан текстовый файл, в котором хранятся данные о сотрудниках фирмы:фамилия,имя, отчество, адрес(улица,дом,квартира) и дата поступления на работу(месяц,год).Во второй файл записать данные только тех из них, кто на сегодняшний день проработал не менее 5 лет.Вывести содержимое полученного файла на экран-Pascal(Паскаль)

uses crt;
type
adres=record{запись-адрес}
      ul:string[20];
      d,k:integer;
      end;
date=record{запись дата поступления}
     m,g:integer;
     end;
sotr=record{основная запись - сведения о сотрудниках}
     f:string[20];
     i,o:char;
     ad:adres;
     dt:date;
     end;
var f,g:text;{текстовые файлы}
    sp:array[1..100] of sotr;{массив записей}
    s,s1:string;
    n,t,c,i,j:integer;
begin
clrscr;
assign(f,'file1.txt');{первый файл открываем для чтения}
reset(f);
assign(g,'file2.txt');{второй для записи}
rewrite(g);
n:=0;
while not eof(f) do
 begin
  n:=n+1;
  readln(f,s);{читаем строки, считаем, парсим и в поля записей}
  sp[n].f:=copy(s,1,pos(' ',s)-1);{первое слово-фамилия}
  delete(s,1,pos(' ',s));{удаляем}
  sp[n].i:=s[1];{имя}
  sp[n].o:=s[3];{отчество}
  delete(s,1,5);{удаляем 5 символов( и.о.пробел )}
  sp[n].ad.ul:=copy(s,1,pos(' ',s)-1);{улица}
  delete(s,1,pos(' ',s));
  s1:=copy(s,1,pos(' ',s)-1);{дом}
  val(s1,t,c);{преобразуем в число}
  sp[n].ad.d:=t;{в запись}
  delete(s,1,pos(' ',s));
  s1:=copy(s,1,pos(' ',s)-1);{квартира}
  val(s1,t,c);
  sp[n].ad.k:=t;
  delete(s,1,pos(' ',s));
  s1:=copy(s,1,pos(' ',s)-1);
  val(s1,t,c);
  sp[n].dt.m:=t;{месяц}
  delete(s,1,pos(' ',s));
  val(s,t,c);
  sp[n].dt.g:=t;{остаток строки - год}
 end;
close(f);
writeln(g,'Na noyabr 2009 g. prorabotali bolee 5 let:');{заголовок в файл}
writeln(g,'');
for i:=1 to n do
if(sp[i].dt.g<2004){если год меньше 2004 }
or((sp[i].dt.g=2004)and(sp[i].dt.m<=11)){или равен, но месяц ментше}
then
writeln(g,sp[i].f,' ',sp[i].i,'.',sp[i].o,'.',sp[i].ad.ul,' ', {записываем в новый файл}
        sp[i].ad.d,' ',sp[i].ad.k,' ',sp[i].dt.m,' ',sp[i].dt.g);
reset(g);{открываем его для чтения, если создали и еще не читали, можно перед этим не закрывать}
while not eof(g) do
 begin
  readln(g,s);
  writeln(s);
 end;
close(g);
readln
end.

Leave a Comment

5 + 5 =