Fatal:syntax error,"UNTIL" expected but "indentifier RESET" found - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Написала программы а компилятор выдает ошибку что делать??
program lab6;
  uses crt;
  type
    avtor=record
      fam:string[12];
      im:string[3];
      ot:string[3];
    end;
    izdanie=record
      izdat:string[21];
      gorod:string[16];
      god:integer;
      kolstr:integer;
    end;
    book=record
      a:avtor;
      nazv:string[49];
      izd:izdanie;
      prod:array[1..3] of integer;
    end;
    var
      f1:text;
      fname:string[80];
      res:integer;
      otv:char;
      books1:array[1..100] of book;
      books2:array[1..100] of book;
      min:array[1..100] of integer;
      i,j,n,m:integer;
      namegorod:string[16];
      minium:integer;
    begin
      clrscr;
        repeat
          writeln('Enter file name');
          write('->');
          readln(fname);
          assign(f1,fname)
          {$I-}
          reset(f1);{Вот тут показывает ошибку!!}
          {$I+}
          res:=IOResuet;
          if res<>0 then
            begin
              writeln;
              writeln('Error');
              writeln('y-yes,n-no');
              readln(otv);
              writeln;
            end;
        until (res=0) or (otv='n');
               i:=1;
      while not EOF(f1) do
        begin
          with books1[i] do
          readln(f1,a.fam,a.im,a.ot,nazv,izd.izdat,izd.gorod,izd.god,izd.kolstr,prod[1],prod[2],prod[3]);
          i:i+1;
        end;
      n:=i-1;
      close(f1);
      assign(f1,'vspom.txt')
      reset(f1);
      read(f1,namegorod);
      close(f1);
      j:=1;
      for i:=1 to n do
        if books1[i].izd.gorod=namegorod then
          begin
            books2[j]:=books1[i];
            j:=j+1;
          end;
      m:=j-1;
      for j:=1 to m do
        with books2[j] do
          begin
            minium:=prod[1];
            if prod[2]<minium then
              mimium:=prod[2];
            if prod[3]<minium then
              minium:=prod[3];
            min[j]:=minium;
          end;
      writeln;
      writeln('Enter file name');
      write('->');
      readln(fname);
      assign(f1,fname);
      rewrite(f1);
      for j:=1 to m do
        with books2[j] do
          begin
            write(f1,a.fam,a.im,a.ot,nazv,izd.izdat,izd.dorod,izd.god,izd.kolstr,'   ',prod[1],'   ',prod[2],'   ',prod[3]);
            writeln(f1,'   ',min[j]);
         end;
      close(f1);
      write('press any key');
      readkey;
end.

Решение задачи: «Fatal:syntax error,"UNTIL" expected but "indentifier RESET" found»

textual
Листинг программы
program lab6;
  uses crt;
  type
    avtor=record
      fam:string[12];
      im:string[3];
      ot:string[3];
    end;
    izdanie=record
      izdat:string[21];
      gorod:string[16];
      god:integer;
      kolstr:integer;
    end;
    book=record
      a:avtor;
      nazv:string[49];
      izd:izdanie;
      prod:array[1..3] of integer;
    end;
    var
      f1:text;
      fname:string[80];
      res:integer;
      otv:char;
      books1:array[1..100] of book;
      books2:array[1..100] of book;
      min:array[1..100] of integer;
      i,j,n,m:integer;
      namegorod:string[16];
      minimum:integer;
    begin
      clrscr;
        repeat
          writeln('Enter file name');
          write('->');
          readln(fname);
          assign(f1,fname);
          {$I-}
          reset(f1);{TюЄ ЄєЄ яюърчvтрхЄ ю°шсъє!!}
          {$I+}
          res:=IOResult;
          if res <> 0 then
            begin
              writeln;
              writeln('Error');
              writeln('y-yes,n-no');
              readln(otv);
              writeln;
            end;
        until (res=0) or (otv='n');
               i:=1;
      while not EOF(f1) do
        begin
          with books1[i] do
          readln(f1,a.fam,a.im,a.ot,nazv,izd.izdat,izd.gorod,izd.god,izd.kolstr,prod[1],prod[2],prod[3]);
          i:=i+1;
        end;
      n:=i-1;
      close(f1);
      assign(f1,'vspom.txt');
      reset(f1);
      read(f1,namegorod);
      close(f1);
      j:=1;
      for i:=1 to n do
        if books1[i].izd.gorod=namegorod then
          begin
            books2[j]:=books1[i];
            j:=j+1;
          end;
      m:=j-1;
      for j:=1 to m do
        with books2[j] do
          begin
            minimum:=prod[1];
            if prod[2]<minimum then
              minimum:=prod[2];
            if prod[3]<minimum then
              minimum:=prod[3];
            min[j]:=minimum;
          end;
      writeln;
      writeln('Enter file name');
      write('->');
      readln(fname);
      assign(f1,fname);
      rewrite(f1);
      for j:=1 to m do
        with books2[j] do
          begin
            write(f1,a.fam,a.im,a.ot,nazv,izd.izdat,izd.gorod,izd.god,izd.kolstr,'   ',prod[1],'   ',prod[2],'   ',prod[3]);
            writeln(f1,'   ',min[j]);
         end;
      close(f1);
      write('press any key');
      readkey;
end.

Объяснение кода листинга программы

Список элементов кода:

  1. Объявление типов данных:
    • avtor: record, содержащий поля fam, im, ot типа string[12], string[3], string[3] соответственно.
    • izdanie: record, содержащий поля izdat, gorod, god, kolstr типа string[21], string[16], integer, integer соответственно.
    • book: record, содержащий поля a, nazv, izd типа avtor, string[49], izdanie соответственно.
    • var: объявить переменные f1 типа text, fname типа string[80], res типа integer, otv типа char, books1 типа array[1..100] of book, books2 типа array[1..100] of book, min типа array[1..100] of integer, i, j, n, m типа integer, namegorod типа string[16], minimum типа integer.
  2. Ввод имени файла с помощью цикла repeat-writeln-readln.
  3. Чтение данных из файла в массив books1 с помощью цикла while not EOF(f1) do и метода readln.
  4. Определение количества книг в массиве books1 с помощью переменной n.
  5. Закрытие файла f1.
  6. Переименование файла f1 в 'vspom.txt'.
  7. Открытие файла f1 для чтения с помощью метода reset.
  8. Чтение названия города из файла в переменную namegorod с помощью метода read.
  9. Закрытие файла f1.
  10. Объявление переменной j равной 1.
  11. Поиск книг из города namegorod в массиве books1 с помощью цикла for i:=1 to n и оператора if.
  12. Объявление переменной m равной количеству найденных книг.
  13. Запись минимальных значений prod[1], prod[2], prod[3] в массив min.
  14. Ввод имени файла с помощью цикла writeln-write-readln.
  15. Переименование файла f1 в имя, введенное пользователем.
  16. Открытие файла f1 для записи с помощью метода assign и rewrite.
  17. Запись данных из книг, найденных в массиве books2, в файл f1 с помощью цикла for j:=1 to m и оператора write.
  18. Закрытие файла f1.
  19. Вывод сообщения press any key и чтение ключа с помощью функции readkey.
  20. Окончание работы программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

6   голосов , оценка 4 из 5