Сведения о компьютерах: Вывести сведения о 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.
Объяснение кода листинга программы
- Создается программа COMPUTERS.
- Определяется тип данных SV, который содержит поля NAME, MARC, ROOM и DATA.
- Создается переменная comp типа SV.
- Задаются значения для переменных fl и nf.
- Открываются файлы fp1 и fp2.
- Записывается строка 'DAHHbIE O KOMn-ax' в fp2.
- Записывается строка 'MAPKA OTBETCTBEHHbIu' в fp2.
- Записывается строка '----------------------------------------' в fp2.
- Инициализируется счетчик fl = 0.
- Инициализируется логическое значение nf = false.
- Запускается цикл while, который будет выполняться до тех пор, пока не будет достигнут конец файла fp1.
- Внутри цикла открывается запись comp.
- Читаются данные из файла fp1 в переменную comp.
- Проверяется условие (POS('IBM PC-486',MARC)>0) AND (2015-DATA=20).
- Если условие истинно, то увеличивается значение счетчика fl на 1.
- Если значение fl равно 1, то записываются данные из comp в fp2.
- Значение fl уменьшается на 1.
- Значение nf устанавливается в true.
- Если значение nf равно false, то записывается строка 'KOMnbI HE HAugeHbI' в fp2.
- Закрываются файлы fp1 и fp2.