Сведения о компьютерах: Вывести сведения о IBM PC-486, приобретенных в 1995 г - Turbo Pascal

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

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

Добрый вечер. Подскажите,что я делаю не так? Условие задачи: Сведенья о компьютерах некоторого учреждения состоят из марки комп,даты приобретения,номера комнаты,где находится компьютер и фамилии ответственного лица. Вывести сведения о IBM PC-486,приобретенных в 1995 г. Решить с помощью файлов Вот что у меня получилось:
На строке 23 выдает ошибку "Ошибочный числовой формат" Если на строке 4 изменить MARC:string[15] на MARC:string[10], то ошибка вылазит на строке 20 - Файл не открыт для ввода Думаю что накосячил в файле ввода (fp1 / comp.pas) Вот так я его заполнил:
Заранее благодарен!

Решение задачи: «Сведения о компьютерах: Вывести сведения о IBM PC-486, приобретенных в 1995 г»

textual
Листинг программы
Program COMPUTERS;
TYPE  SV=RECORD
      NAME:string[30];
      MARC:string[10];
      ROOM:integer;
      DATA:integer;
      end;
Var   comp:SV;
      fl:integer;
      nf:boolean;
      fp1,fp2:text;
BEGIN
  ASSIGN(fp1,'comp.pas');
  ASSIGN(fp2,'vcomp.pas');
  RESET(fp1);
  REWRITE(fp2);
  writeln(fp2,' ':11,'DAHHbIE O KOMn-ax');
  writeln(fp2,' ':3,'MAPKA',' ':3,'DATA KOMHATA OTBETCTBEHHbIu');
  writeln(fp2,'----------------------------------------');
  fl:=0;
  nf:=false;
   while not EOF (fp1) do
   with comp do
    begin
     readln(fp1,MARC,DATA,ROOM,NAME);
    IF (POS('IBM PC-486',MARC)>0) AND (2015-DATA=20) THEN
      begin
       fl:=fl+1;
         if fl=1 then
           begin
            writeln(fp2,MARC,' ',DATA:4,' ',ROOM:4,' ',' ':4,NAME);
            fl:=fl-1;
            nf:=true;
            end;
      end;
     end;
  if nf=false then
   writeln(fp2,' ':11,'KOMnbI HE HAugeHbI');
  CLOSE(fp1);
  CLOSE(fp2);
END.

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

  1. Создается программа COMPUTERS.
  2. Определяется тип данных SV, который содержит поля NAME, MARC, ROOM и DATA.
  3. Создается переменная comp типа SV.
  4. Задаются значения для переменных fl и nf.
  5. Открываются файлы fp1 и fp2.
  6. Записывается строка 'DAHHbIE O KOMn-ax' в fp2.
  7. Записывается строка 'MAPKA OTBETCTBEHHbIu' в fp2.
  8. Записывается строка '----------------------------------------' в fp2.
  9. Инициализируется счетчик fl = 0.
  10. Инициализируется логическое значение nf = false.
  11. Запускается цикл while, который будет выполняться до тех пор, пока не будет достигнут конец файла fp1.
  12. Внутри цикла открывается запись comp.
  13. Читаются данные из файла fp1 в переменную comp.
  14. Проверяется условие (POS('IBM PC-486',MARC)>0) AND (2015-DATA=20).
  15. Если условие истинно, то увеличивается значение счетчика fl на 1.
  16. Если значение fl равно 1, то записываются данные из comp в fp2.
  17. Значение fl уменьшается на 1.
  18. Значение nf устанавливается в true.
  19. Если значение nf равно false, то записывается строка 'KOMnbI HE HAugeHbI' в fp2.
  20. Закрываются файлы fp1 и fp2.

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

15   голосов , оценка 3.867 из 5
Похожие ответы