Иллюстрированный самоучитель по Turbo Pascal для начинающих

Решения (задачи 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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.