Вывод матрицы в виде таблицы.
Для правильного размещения элементов матрицы на экране следует единым образом сформатировать вывод каждого элемента исходя из оценки их порядка и требуемой точности. Например, так:
for i:=1 to 10 do
begin
for j:=1 to 20 do write(a[i,j]:5:1);
writeln
end;
Пример. Даны n, квадратная вещественная матрица a(n´n). Преобразовать ее следующим образом: посчитать сумму элементов, стоящих под главной диагональю и записать ее во все элементы главной диагонали.
Решение.
Пусть i означает номер строки, j – номер столбца. Главная диагональ характеризуется условием i=j. Цикл (двойной) по области под главной диагональю организуется следующим образом: внешний цикл делается по строкам (параметр i пробегает от 2 до n), внутренний цикл по j при фиксированном i (т.е. по i-й строке) начинается с j=1, а заканчивается перед элементом на главной диагонали, т.е. при j=i–1. |
Программа.
program pr7;
type matr=array[1..20,1..20] of real;
var a:matr;
i,j,n:integer ;
s:real;
begin
repeat
writeln(¢введите n<=20¢);
read(n)
until n<=20;
for i:=1 to 20 do
begin
writeln(¢введите ¢,i,¢ строку из ¢,n,¢ чисел¢);
read(a[i,j])
end;
s:=0;
for i:=2 to n do
for j:=1 to i-1 do s:=s+a[i,j];
for i:=1 to n do a[i,i]:=s;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:7:2);
writeln
end;
end.
8. Файлы
Файловый тип представляет собой произвольной длины последовательность однотипных компонент.
Задание файлового типа:
type <имя типа>=file of <тип компонент>;
Тип компонент файла может быть любым, кроме файлового.
В то же время под файлом еще понимается поименованная область внешней памяти компьютера (либо логическое устройство – потенциальный источник или приемник информации).
Любой файл (как именованная область на диске) становится доступным программе только после выполнения процедуры открытия файла. Она заключается в связывании ранее объявленной файловой переменной с именем данного файла и его инициализации (указании направления обмена информации: чтение из файла или запись в него).
Файловая переменная связывается с именем файла с помощью стандартной процедуры assign:
assign(<ф.п.>,<имя файла>);
где:
<ф.п.> – файловая переменная,
<имя файла> – текстовое выражение, содержащее имя файла на диске.
С каждым файлом связано понятие текущего указателя, указывающего на определенную позицию в данном файле.
Инициализация файла для чтения делается с помощью стандартной процедуры reset:
reset(<ф.п.>);
При этом указатель, связанный с этим файлом устанавливается на начало файла.
Стандартная процедура
rewrite(<ф.п.>);
инициирует файл, связанный с переменной <ф.п.> для записи. Если данный файл на диске уже существовал, то он уничтожается и создается новый файл с таким же именем, при этом указатель устанавливается на начало.
Стандартная процедура
append(<ф.п.>);
инициирует запись в уже существующий файл для его расширения. При этом указатель устанавливается в конец файла. Процедура append применима только к текстовым файлам, т.е. таким, у которых файловая переменная имеет стандартный тип text (см. далее).
Текстовые файлы.
Текстовый файл представляет собой совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу text.
Для доступа к таким файлам применяются процедуры read, readln (чтение из файла) и write, writeln (запись в файл). Первым параметром в названных процедурах должна быть файловая переменная.
Процедура read обеспечивает ввод символов, строк и чисел. Обращение:
read(<ф.п.>,<список ввода>);
При этом файл, связанный с переменной <ф.п.> должен быть предварительно инициирован (открыт) для чтения.
По исполнении процедуры read указатель, связанный с данным файлом, смещается вперед в соответствии с количеством считанных компонент файла. Повторное обращение к процедуре read обеспечит ввод начиная с позиции указателя.
Процедура readln(<ф.п.>,<список ввода> аналогична процедуре read с той разницей, что после считывания последней переменной оставшаяся часть строки пропускается, и указатель устанавливается на начало следующей строки, поэтому следующее обращение к read или readln начнется с первого символа новой строки.
Процедура write(<ф.п.>,<список ввода>) обеспечивает вывод информации в текстовый файл, связанный с переменной <ф.п.>, предварительно инициированный для записи.
Процедура writeln(<ф.п.>,<список ввода>) аналогична процедуре write с той разницей, что после вывода строки указатель устанавливается на начало новой строки, таким образом, следующее обращение к процедурам write или writeln обеспечит вывод с начала новой строки.
По окончании всех записей в файл для сохранения их на диске файл следует закрытьпроцедурой
close(<ф.п.>);
Если этого не сделать, записи не сохраняются!
Дата добавления: 2016-09-06; просмотров: 1914;