Показать сообщение отдельно
  #1  
Старый 16.12.2014, 20:47
glozigor glozigor вне форума
Прохожий
 
Регистрация: 16.12.2014
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
Восклицание Помощь с типизированным файлом

В анкетах сотрудников некоторого учреждения имеются следующие сведения: фамилия, имя, отчество,год рождения, должность(мастер, инженер, рабочий), стаж, образование. Вывести фамилии, имена и отчества мастеров с высшим образованием и вычислить их средний стаж.
Ввод файла нужен из блокнота:
Ivanov Igor Bor 1970 master 20 vishee
Petrov Sergey Ser 1966 master 3 vishee
Но чтобы я не вводил, результат одинаковый: Нет мастеров с высшим образованием.
В чем ошибка?
Вот программа:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
type sved=record     {zapis}
       fam:string[10];     {polia zapisi}
       im:string[10];
       ot:string[10];
       god:word;
       dol:string[10];
       staj:real;
       obr:string[10];
     end;
var b:sved;                     {peremen tipa zapis}
    k:integer;           {kol}
    sr:real;              {sred staj }
    f:file of sved;    {tipizip file }
    imf:string[25];          {imia file}
begin                       {glav progr}
  writeln('Vvedite imia file');
  readln(imf);                         {vvod imia file}
  assignfile(f,imf);                       {svias fil peremen s imen file}
  {$I-}
 reset(f);
   {$I+}
 if ioresult=2 then             {result prover suchestv file}
  writeln('File net')
  else
  begin
  k:=0;
  sr:=0;
 
  while not eof (f) do        {poka net konca file}
    begin
     read (f,b);              {chiraem zapis is file}
     with b do
     begin
    if (dol='master') and (obr='vishee') then       {prover uslov}
    begin
        k:=k+1;                       {kol udovl uslov}
        sr:=sr+staj;                  {summ staj udovl uslov}
        Writeln(fam:10,im:10,ot:10);   {vivod udovl uslov}
     end;
     end;
   end;
     if k=0 then
  writeln('Net masterov s vishim obrazov')
     else
     begin
  writeln('Kol-vo masterov s vishim obrazov=',k);
  sr:=sr/k;                                  {sred staj udovl uslov}
  writeln('Sred staj masterov s vishim obrazov=',sr:6:2);
   end;
   end;
   closefile(f);
   readln;
   end.
Админ: Пользуемся тегами для оформления кода!
Ответить с цитированием