- •Примеры решения задач с помощью языка программирования “Паскаль”.
- •Пользуясь блок-схемой составим программу
- •Далее процесс повторяем:
- •Программа
- •Программа
- •Алгоритм
- •3. Закончить программу.
- •Составим программу
- •Программа
- •Программа
- •Программа
- •Для этого в Паскале есть стандартные функции round(X) и trunc(X)
- •Программа
- •Программа
- •Программа
- •Программа
- •Программа
Программа
Program Problem2;
var
name : string;
f : file of integer;
x, i : integer;
begin
write('Введите имя файла '); readln(name);
assign(f, name);
rewrite(f);
for i := 1 to 5 do write(f, i);
reset(f);
for i := 3 to 5 do
begin
seek(f, i - 1); read(f, x);
x := 10*i;
seek(f, i - 1);
write(f, x)
end;
writeln('Содержимое файла f');
reset(f);
while not eof(f) do
begin
read(f, x);
write(x, ' ')
end;
close(f);
end.
Пример 23. Компонентами файла f являются действительные числа. Найти:
а) сумму компонент; б) произведение компонент;
в) сумму квадратов компонент;
г) модуль суммы и квадрат произведения компонент;
д) последнюю компоненту файла.
Program Problem3; { Обработка компонентов файла }
const
name = 'd:\Bp\Prakt\P23\array3.dat';
type
v = file of real;
var
f : v;
a, s, sk, p : real;
i : integer;
{---------------------------------------------------------------------------------}
{Открытие файла f, соответствующего на диске файлу arra3.dat
и процедура заполнения его действительными числами}
Procedure create(var f : v);
var
i, n : integer;
a : real;
begin
assign(f, name); { доступ к файлу f }
{$i-}
rewrite(f); { открытие его для записи }
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
write('Введите число элементов '); readln(n);
for i := 1 to n do
begin
write('Введите ', i, '-й элемент '); readln(a);
write(f, a) { запись элементов массива в файл f }
end;
close(f); { закрытие файла f }
end;
{---------------------------------------------------------------------------------}
begin
create(f);
assign(f, name); {доступ к файлу f}
{$i-}
reset(f); {Открытие файла f для чтения}
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
s := 0; p := 1; sk := 0;
while not eof(f) do
begin
read(f, a); { Чтение элементов массива из файла f }
s := s + a; p := p*a;
sk := sk + a*a;
end;
writeln('Сумма компонент файла равна ', s:6:4);
writeln('Произведение компонент файла ', p:6:4);
writeln('Сумма квадратов компонент ', sk:12:4);
write('Модуль суммы и квадрат произведения компонент ');
writeln(abs(s):6:4, ' ', p*p:10:4);
seek(f, FileSize(f) - 1); read(f, a);
writeln('Последний компонент файла ', a:6:4);
close(f) { Закрытие файла f }
end.
Пример 24. Дан файл f, компонентами которого являются целочисленные массивы Каждый массив преобразовать в квадратную матрицу размера
а) б)
записать в файл g.
В этом примере задан не один массив, несколько целочисленных массивов по 7 элементов каждый, причем количество таковых массивов определяет пользователь. Каждый из них следует преобразовать в виде матрицы заданного вида.
Здесь мы воспользуемся двумя файлами, один - содержит элементы заданного массива, а второй - матрицы размера .
Опишем в разделе констант физические имена файлов и путь к ним:
const
n = 7;
name = 'd:\Bp\Prakt\P23\arr20a.dat';
name1 = 'd:\Bp\Prakt\P23\matr20wa.dat';
Опишем массивы и файлы
t = array[1..n] of integer; - массив по числу столбцов, s = array[1..n] of longint - массив по числу строк, m = array[1..n] of s; - массив матрица из s строк и n столбцов. С такими описаниями мы уже знакомы из предыдущих глав.
Теперь следует описать файловые переменные для этих массивов.
v = file of t; - файловая переменная для заданного одномерного массива;
vv = file of m; - файловая переменная для матриц.
type
t = array[1..n] of integer;
s = array[1..n] of longint;
m = array[1..n] of s;
v = file of t;
vv = file of m;
var
x : t;
p : s;
a : m;
f : v;
g : vv;
n1, i, j, d, k : integer;
Представляет интерес, создание и запись нескольких массивов в файл, надо заметить, что если предыдущие программы легко можно было сделать без файлов, то несколько двумерных массивов держать в памяти достаточно сложно, поэтому использование файла здесь вполне уместно. Достигается запись в файл нескольких массивов с помощью следующей последовательности циклов.
Файл g открывается для записи, организуется внешний цикл по k по числу двумерных массивов n1, заданных пользователем.
rewrite(g);
for k := 1 to n1 do
begin
read(f, x);
for d := 1 to n do p[d] := 1;
for j := 1 to n do
for i := 1 to n do
begin
p[i] := x[i]*p[i];
a[j, i] := p[i]
end;
write(g, a)
end;
В цикле открывается файл для чтения read(f, x); организуется цикл для присваивания элементам p[d] значений 1, так как их придется впоследствии умножать на элементы заданного массива и таким образом получать построчно элементы матрицы. Это делается с помощью двух циклов по количеству строк и столбцов. Полученная каждая матрица, поочередно, записывается в файл g. Причем оператор записи находится внутри внешнего цикла по k: write(g, a).