Решения (задачи 224-241)
Задача 230
{ Дописывает в файл а:\phone.txt фамилию, имя и номер телефона. Если файла на диске нет, то создает его. } label bye; var f: text; { текстовый файл } fam: string[15]; { фамилия } name: string[15]; { имя } tel: string[9]; { номер телефона } begin writeln('Добавление в телефонный справочник'); Assign(f,'a:\phone.txt')) {$1-} Append(f); { сначала откроем в режиме добавления } if IOResult <> 0 then { вероятно файла phone.txt нет на диске А:} { создадим его } begin Rewrite(f); { открыть в режиме перезаписи } if IOResult О 0 then begin writeln('Ошибка обращения к диску А:'); goto bye; end; end; { получим данные от пользователя } write('Фамилия › '); readln(fam); write('Имя › '); readln(name); write('Телефон › '); readln(tel); { и запишем их в файл } writeln(f,fam); writeln(f,name); writeln(f,tel); close(f); writeln('Информация добавлена.': writeln('Для завершения работы ', 'нажмите Enter.'); readln; end.
Задача 232
{ Поиск в телефонном справочнике } label bye; var f: text; { текстовый файл } obr: string[15]; { фамилия для поиска } n: integer; { кол-во записей, удовлетворяющих запросу } fam: string[15]; { фамилия } name: string[15]; { имя } tel: string[9]; { номер телефона } begin writeln('Поиск в телефонном.справочнике'); Assign(f,'a:\phone.txt'); reset (f); (откроем файл для чтения } if IOResult О 0 then { вероятно файла phone.txt на диске А: нет } begin writeln('Файл a:\phone.txt не доступен'); goto bye; end; repeat write('Фамилия › '); readln(obr); if Length(obr) <> 0 then { пользователь ввел строку } begin reset(f); { просматриваем файл от начала } n: = 0; while not EOF(f) do { просматриваем весь файл } begin { читаем из файла } readln(f,fam); readln(f,name); readln(f,tel); if fam = obr then { найдена нужная фамилия } begin writeln(fam,' ',name, ' ',tel); n: = n+l; end; end; if n = 0 then writeln('Сведений о ', obr,' нет.'); end; until Length(obr) = 0; bye: writeln('Для завершения работы нажмите <strong>Enter</strong>.'); readln; end.
Задача 234
{ Универсальная программа тестирования } uses Crt; label bye; fname: string[40]; { имя файла теста } f: text; (файл теста } VsegoVopr: integer; { количество вопросов теста } PravOtv: integer; { количество правильных ответов } { для текущего вопроса } nOtv: integer; { количество альтернативных ответов } prav: integer; { номер правильного ответа) Otv: integer; { номер ответа, выбранного пользователем } st: string; { строка, читаемая из файла теста } р: integer; { процент правильных ответов } 1: integer; { счетчик циклов } in if ParamCount = 0 then begin writeln('Не задан файл вопросов теста!'); ' writeln('Командная строка: test ИмяФайлаТеста'); goto bye; end; fname: = ParamStr(1); { имя файла из командной строки } Assign(f,fname); {$1-} { это директива компилятору, а не комментарий! } Reset (f); { открыть файл для чтения) if IOResult <> 0 then begin writeln('Не найден файл теста ', fname); goto bye; end; writeln('Сейчас Вам будет предложен тест.'); writeln('К каждому вопросу дается несколько вариантов ', 'ответа.'); " writeln('Вы должны ввести номер правильного ответа', 'и нажать клавишу Enter'); writeln; writeln('Удачи! Для начала тестирования нажмите Enter'); TextBackGround(Blue); ClrScr; VsegoVopr: = 0; Prav: = 0; while not EOF(f) do begin (ClrScr;} VsegoVopr: = VsegoVopr+l; readln(f,st); { читаем из файла вопрос } TextColor(White); writeln(st); { выводим вопрос на экран } readln(f,nOtv,Prav); { читаем кол-во альтернативных ответов и номер правильного ответа } TextColor(LightGray); for i: = l to nOtv do (читаем и выводим альтернативные ответы } begin readln(f,st); writeln(i,'. ',st); end; writeln; write('Ваш выбор › '); readln(Otv); if Otv = Prav then PravOtv: = PravOtv+l; writeln; end; { обработка результата тестирования } { вычислим процент правильных ответов } p: = Round((PravOtv/VsegoVopr)*100); write('Ваша оценка '); case p of 100:writeln('ОТЛИЧНО!'); 80..99:writeln('ХОРОШО.'); 60..79:writeln('УДОВЛЕТВОРИТЕЛЬНО.); else writeln('ПЛОХО!'); end; bye: write('Для завершения работы программы нажмите Enter'); readln; end.