Vad1k,
1) Написать программу, которая на сменном диске компьютера (А

создает файл numbers.txt и записывает в него 5 введенных пользователем целых чисел. Просмотрите при помощи редактора текста, например, встроенного в Norton Commander, созданный файл. Убедитесь, что каждое число находится в отдельной строке.
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| { Создает на диске А: файл и записывает в него 5 целых чисел, введенных пользователем }
var
f: text; { текстовый файл }
n: integer; { число }
i: integer; { счетчик чисел }
begin
writeln('Создание файла');
writeln('Введите пять целых чисел.1);
writeln('После ввода каждого числа нажимайте <Enter>');
Assign(f,'а:\numbers.txt');
Rewrite(f); { открыть в режиме перезаписи }
for i:=l to 5 do begin
write('->'); readln(n);
writeln(f,n);
end;
close(f); { закрыть файл }
writeln('Введенные числа записаны в файл ', 'а:\numbers.txt');
readln;
end. |
|
2) Напишите программу, которая дописывает в файл a:\numbers.txt 5 введенных пользователем целых чисел. Убедитесь при помощи редактора текста, что в файле находятся 10 чисел.
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| {Дописывает в файл a:\numbers.txt пять введенных пользователем целых чисел }
f: text; { текстовый файл }
n: integer; { число }
i: integer; { счетчик чисел }
begin
writeln('Добавление в файл a:\numbers.txt');
writeln('Введите пять целых чисел.');
writeln('После ввода каждого числа нажимайте <Enter>');
Assign(f,'а:\numbers.txt');
Append(f); { открыть файл в режиме добавления }
for i:=l to 5 do begin
write('->');
readln(n);
writeln(f,n);
end;
Close(f); { закрыть файл }
writeln('Введенные числа добавлены в файл ', 'а:\numbers.txt'); readln;
end. |
|
3) Написать программу, которая выводит на экран содержимое файла a:\numbers.txt.
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| { Выводит на экран содержимое файла а:\numbers.txt }
var
f: text; { текстовый файл }
n: integer; { число }
begin
writeln('Содержимое файла a:\nunibers.txt1);
writeln ('-----------------------------') ;
Assign(f,'a:\numbers.txt'); Reset(f); { открыть файл для чтения }
While not EOF(f) do { пока не достигнут конец файла } begin
readln(f,n); { прочитать число из файла }
writeln(n); { вывести прочитанное число на экран }
end;
Close(f);
writeln ('-readln);
end. |
|
4) Написать программу, которая вычисляет среднее арифметическое чисел, находящихся в файле a:\numbers.txt.
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| {Вычисляет среднее арифметическое чисел, находящихся в файле a:\numbers.txt }
var
f: text; { текстовый файл }
n: integer; { число, прочитанное из файла }
kol: integer; { кол-во прочитанных чисел }
sum: integer; { сумма прочитанных чисел }
sa: real; { среднее арифметическое }
begin
writeln('Вычисление среднего арифметического чисел,');
writeln('находящихся в файле a:\numbers.txt');
writeln('Чтение из файла. Подождите.');
sum:=0; kol:-0;
Assign(f,'a:\numbers.txt'); Reset (f); { открыть файл для чтения }
While not EOF(f) do { пока не достигнут конец)
begin
readln(f,n); { прочитать число из файла }
sum:=sum+n;
kol:=kol+l;
end;
Close(f); { закрыть файл }
sa:=sum/kol;
writeln('Прочитано чисел: ',kol); writeln('Сумма чисел: ',sum) ; writeln('Среднее арифметическое: ',sa:9:2);
readln;
end. |
|
5) Написать программу, которая позволяет просматривать текстовые файлы (выводит на экран содержимое файла), например, файлы исходных программ Turbo Pascal. Имя просматриваемого файла должно вводиться во время работы программы. Рекомендуемый вид экрана приведен ниже.
Просмотр текстового файла.
Введите полное имя файла и нажмите <Enter>
—> c:\tp\pas\numb.pas
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| { Выводит на экран содержимое файла, имя которого указано пользователем }
uses Crt;
f: text; { текстовый файл }
fname: string[80]; ( имя файла }
st: string; { строка, прочитанная из файла }
'nst: integer; { кол-во выведенных на экран строк}
key: char; { клавиша, нажатая пользователем }
begin
ClrScr; { очистить экран }
writeln('Просмотр текстового файла');
writeln('Введите полное имя файла и нажмите <Enter>');
write('-> '); readln(fname);
Assign(f,fname);
Reset(f); { открыть файл для чтения }
ClrScr;
nst:=0;
While not EOF(f) do { пока не достигнут конец файла }
begin
readln(f,st); ( прочитать число из файла }
writeln(st);
• nst:=nst+l;
if nst = 23 then { выведены очередные 23 строки }
begin
writeln;
write('Для продолжения вывода ',
'нажмите любую клавишу...');
key:=Readkey;
GotoXY(l,WhereY); { курсор в начало текущей строки }
DelLine; { удалить сообщение "Для продолжения ..."}
nst:=0;
end;
end;
Close(f); { закрыть файл }
writeln;
write('Для завершения просмотра нажмите любую ', 'клавишу...');
key:=Readkey;
end. |
|
6) Написать программу, которая дописывает в файл phone.txt, находящийся на диске А:, фамилию и номер телефона, например, вашего товарища. Если файла на диске нет, то программа должна создать его. В файле каждый элемент данных (имя, фамилия, телефон) должен находиться в отдельной строке. Рекомендуемый вид экрана во время работы программы приведен ниже.
Добавление в телефонный справочник.
Фамилия —> Сидоров
Имя —> Вася
Телефон -> 234-84-37
Информация добавлена.
Для завершения работы нажмите <Enter>.
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| { Дописывает в файл а:\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. |
|
7) Написать программу, которая позволяет найти нужные сведения в телефонном справочнике (a:\phone.txt). Программа должна запрашивать фамилию человека и выводить его телефон. Если в справочнике есть одинаковые фамилии, то программа должна вывести список всех людей, имеющих эти фамилии. Рекомендуемый вид экрана во время работы программы приведен ниже.
Поиск в телефонном справочнике.
Введите фамилию и нажмите <Enter>. Для завершения работы
с программой сразу после приглашения нажмите <Enter>
—> Петров
В справочнике данных о Петров нет.
—> Иванов
Иванов Вася 578-12-45
Иванов Сергей 244-34-02
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| { Поиск в телефонном справочнике }
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('Для завершения работы нажмите <Enter>.');
readln;
end. |
|
8) Написать универсальную программу тестирования. Тест, последовательность вопросов и варианты ответов должны находиться в текстовом файле. Имя этого файла программа должна получать из командной строки ее запуска. Количество вопросов теста не ограничено. Однако предлагается ввести следующее ограничение: текст вопроса и альтернативных ответов не должен занимать более одной строки экрана.
Программа должна выставлять оценку по следующему правилу: ОТЛИЧНО — за правильные ответы на все вопросы, ХОРОШО — если испытуемый правильно ответил не менее, чем на 80% вопросов, УДОВЛЕТВОРИТЕЛЬНО — если правильных ответов более 60%, и ПЛОХО — если правильных ответов меньше 60%.
Ниже приведены рекомендуемая структура файла вопросов теста (Nj — количество альтернативных ответов к i-му вопросу, Kj — номер правильного ответа), пример файла теста и вид экрана во время работы программы (номера ответов, введенные пользователем, выделены полужирным шрифтом).
Вопрос1
N1 .M1 ;
Ответ
...
Ответ
Ответ
Вопрос2
N2.M2;
Ответ
...
Ответ
Вопросk
Nk.Mk;
Ответ
...
Ответ
Архитектор Исаакиевского собора
3 2
Доменико Трезини
Огюст Монферран
Карл Рос си
Архитектор Зимнего дворца
2 2
Франческо Бартоломео
Огюст Монферран
Невский проспект получил свое название
3 2
По имени реки, на которой стоит Санкт-Петербург.
По имени близко расположенного монастыря, Александро-Невской
лавры.
в память о знаменитом полководце — Александре Невском.
Сейчас Вам будет предложен тест.
К каждому вопросу дается несколько вариантов ответов.
Вы должны ввести номер правильного ответа
и нажать клавишу <Enter>
Архитектор Исаакиевского собора:
1. Доменико Трезини
2. Огюст Монферран
3. Карл Росси -> 2
Архитектор Зимнего дворца:
1. Франческо Бартоломео
2. Карл Росси -> 2
Часть I. Задачи
67
Невский проспект получил свое название:
1. По имени реки, на которой стоит Санкт-Петербург.
2. По имени близко расположенного монастыря, Александро-Невской лавры.
З.в память о знаменитом полководце — Александре Невском.
Ваша оценка ОТЛИЧНО!
Для завершения работы программы нажмите <Enter>
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| { Универсальная программа тестирования }
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('He задан файл вопросов теста!'); ' 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. |
|
9) Напишите программу, которая по желанию пользователя выводит таблицу пересчета из дюймов в миллиметры на экран, принтер или в файл. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным.
*** Таблица пересчета из дюймов в миллиметры *** Результат выводить:
1 — на экран;
2 — на принтер;
3 — в файл.
Введите число от 1 до 3 и нажмите <Enter> Ваш выбор -> 1
Дюймы Миллиметры
0.5 12.7
1.0 25.4
1.5 38.1
2.0 50.8
2.5 63.5
3.0 76.2
3.5 88.9
4.0 101.6
4.5 114.3
5.0 127.0
Pascal |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| {Выводит таблицу пересчета из дюймов в миллиметры на экран, принтер или в файл}
f:text; { файл вывода }
fname:string; { имя файла вывода }
dest:integer; { 1 - на экран, 2 - на принтер, 3 - в файл }
d: real; { величина в дюймах }
m: real; { величина в миллиметрах}
begin
writeln('*** Таблица пересчета из дюймов ', 'в миллиметры ***');
writeln('Результат выводить:');
writeln('l - на экран;');
writeln('2 - на принтер;1);
writeln('3 - в файл.');
writeln('Введите число от 1 до 3 и нажмите <Enter> ');
write('Ваш выбор -> ');
readln(dest);
case dest of
1: fname:=''; {на экран }
2: begin { на принтер } fname:='prn';
write('Включите принтер и нажмите <Enter>');
readln;
end;
3: begin { в файл }
write('Задайте имя файла для вывода -> ');
readln(fname);
end;
end;
assign(f,fname); rewrite(f);
writeln(f,' ------------------') ;
writeln(f,' Дюймы Миллиметры');
writeln(f,' -------------------') ;
d:=0.5;
while d < 10 do begin
m:=25.4*d; { 1 дюйм - 25,4 мм }
writeln(f,d:6:l,m:10:1);
d:=d+0.5;
end;
writeln(f,' -------------------');
close(f);
if dest = 3
then writeln('Таблица записана в файл ',fname);
writeln('Для завершения работы программы', 1 нажмите <Enter>');
readln;
end. |
|