9 - Типизированные файлы и массивы
.pdfЛ. Р. |
|
Студент |
Иванов И. И. |
|
Группа |
ХХ-999 |
|
«Типизированные файлы и |
|
|
|
|
Дата |
дд.мм.гг |
|
массивы» |
|
||
|
|
|
|
|
|
Допуск |
|
|
|
|
|
|
|
Выполнение |
|
|
|
|
|
|
|
Отчет |
|
|
|
|
|
Условие задачи |
|
|
|
Ввести файл F , вывести его. |
Сформировать квадратную матрицу A1N1×N1 |
максимально возможного размера из всех элементов левее максимума и матрицу A22×3 из положительных элементов правее максимума (если
формирование невозможно, то сообщить об этом). Для вывода матриц использовать подпрограммы.
Тестовые примеры
1)
Входные данные:
введенный файл F:
|
1 |
|
2 |
|
|
3 |
|
4 |
5 6 |
100 |
|
2 |
|
3 |
|
4 |
|
5 |
-3 -2 |
4 |
|
3 |
2 |
|
Выходные данные: |
||||||||||||||||||||||||
Матрица |
|
|
после формирования: |
|||||||||||||||||||||
A1 |
||||||||||||||||||||||||
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Матрица |
A2 |
|
после формирования: |
|||||||||||||||||||||
2 |
3 |
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
5 |
4 |
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
Блок-схема
Начало
Assign(F, ‘F.dat’)
Rewrite(F) |
Ввод buf (1-я |
компонента файла) |
buf ≠ 999 |
F←buf |
Ввод buf |
reset(F) |
Not EOF(F) |
buf←F |
Вывод buf |
1 |
VivodMx(const A:T2m; const N,M: byte; const name:Tname)
|
‘Вывод матрицы’, |
1 |
name |
|
|
reset(F) |
i := 1 , N |
|
|
|
j := 1 , M |
max←F |
|
|
Вывод A[i, j] |
kmax:=0 |
|
|
Выход |
|
not EOF(F) |
|
buf←F |
|
buf>max |
|
max:=buf |
|
kmax:=filePos(F)-1 |
|
1 |
|
стр. 3 |
2 |
|
|
1 |
1 |
|
|
|
стр. 2 |
|
||
|
kmax=0 |
nPol<2*3 |
|
|
|
reset(F) |
|
seek(F,kmax+1) |
|
‘Левее |
|
'справа от |
|
|
максимума нет |
|
i:=1 |
||
N1:=trunc(sqrt(kmax)) |
максимума нет |
|||
элементов, |
j:=1 |
|||
|
2*3=6 положит. |
|||
формирование |
|
|
||
|
элементов, а |
|
||
матрицы A1 |
|
|
||
j := 1 , N1 |
потому |
|
||
невозможно’ |
|
|||
|
формирование |
|
||
|
|
|
||
|
i := 1, N1 |
матрицы |
|
|
|
A2(2х3) |
buf←F |
||
|
|
невозможно' |
|
|
|
buf←F |
|
buf>0 |
|
|
|
|
||
|
A1[i, j] := buf |
|
buf←F |
|
|
|
|
A2[i,j]:=buf |
|
|
VivodMx(A1,N1,N1,'A1') |
|
j := j + 1 |
|
|
|
|
||
|
seek(F,kmax+1) |
|
j>3 |
|
|
nPol:=0 |
i := i + 1 |
|
|
|
|
|
||
|
|
j := 1 |
|
|
|
Not EOF(F) |
|
|
|
|
|
|
i>2 |
|
|
buf←F |
|
|
|
|
buf>max |
|
VivodMx(A2,2,3,'A2') |
|
|
|
|
||
nPol:=nPol+1 |
|
|
|
|
|
|
конец |
|
|
|
1 |
|
|
Листинг программы на Pascal
program MaxMInExch; const L=10;
type T2M = array[1.. L,1..L] of integer; Tname = string[4];
var A1,A2: T2M; i,j,N1,kmax,nPol:byte; buf,max:integer;
F: file of integer;
3
// процедура для вывода матрицы
procedure VivodMx(const A:T2m; const N,M: byte; const name:Tname);
var i,j:byte; begin
writeLn('Матрица ',name,' после формирования:'); for i:=1 to N do
begin
for j:=1 to M do write(A[i,j]:4);
writeLn;
end;
end;
// основная программа begin
//инициализация файла
Assign(F,'F.dat');
rewrite(F);
writeLn('введите первую компоненту файла'); readLn(buf);
while buf<>999 do begin
write(F,buf);
writeLn('введите следующую компоненту:'); readLn(buf);
end;
//вывод файла
writeLn('введенный файл F:'); reset(F);
while not EOF(F) do begin
read(F,buf);
write(buf:4);
end;
writeLn;
// поиск максимума reset(F); read(F,max); kmax:=0;
while not EOF(F) do begin
read(F,buf); if buf>max then
begin max:=buf;
kmax:=filePos(F)-1; end;
end;
4
if kmax=0 then
writeLn('Левее максимума нет элементов, формирование матрицы A1 невозможно')
else begin
reset(F);
N1:=trunc(sqrt(kmax)); for i:=1 to N1 do
for j:=1 to N1 do begin
read(f,buf);
A1[i,j]:=buf;
end;
VivodMx(A1,N1,N1,'A1');
end;
seek(F,kmax+1);
nPol:=0;
while not EOF(F) do begin
read(F,buf); if buf>0 then inc(nPol);
end;
if nPol<2*3 then begin
writeLn('справа от максимума нет 2*3=6 пол. элементов,'); writeLn('а потому формирование матрицы A2(2х3) невозможно'); end
else begin
seek(F,kmax+1);
i:=1;
j:=1; repeat
read(F,buf);
if buf>0 then // если элемент >0, то его в матрицу begin
A2[i,j]:=buf;
inc(j);
if j>3 then begin
inc(i);
j:=1;
end;
end; until i>2;
VivodMx(A2,2,3,'A2');
end;
close(F);
end.
5
Список задач для лабораторной работы «Типизированные файлы и массивы»
1. Ввести целую квадратную матрицу AN×N , вывести ее. Из положительных элементов матрицы сформировать файл F , который вывести. Далее из файла F сформировать файл G , в который сначала записать сумму всех элементов файла F , затем максимальное значение файла F , затем все его компоненты в обратном порядке. Вывод файлов реализовать процедурой.
2.Создать файл F вещественных чисел. Получить вектор B , записывая в него каждую третью компоненту файла, читая файл с начала, и вектор A , читая файл с конца. Файл и полученные векторы распечатать. Вывод векторов реализовать процедурой.
3.Ввести с клавиатуры квадратную матрицу AN×N , вывести её. Создать
файлы F и G следующим образом: в файл G сначала записать элементы главной диагонали, затем побочной, в файл G по строкам вписать элементы матрицы, исключая диагональные. В конец файлов приписать удвоенную сумму всех элементов матрицы. Вывод файлов реализовать процедурой.
4. Ввести с клавиатуры квадратную матрицу AN×N , вывести её.
Определить в матрице максимальные элементы каждой строки и записать их значения в файл F . Определить минимальную компоненту в файле F , которую утроить. Файл вывести до и после преобразования (вывод реализовать процедурно).
5. Из компонент файла F , введенного с клавиатуры, создать квадратную матрицу AN×N максимально возможного размера. Определить в матрице сумму элементов каждого столбца и записать вычисленные суммы в конец файла. Выдать файл F до преобразования и после, а также матрицу в виде таблицы. Вывод файла реализовать процедурно.
6
6. Сформировать файл F целого типа. Найти S – сумму первых трех положительных компонент файла. Ввести x , если S > x , то получить из файла одномерный массив AN , записывая в него каждую вторую компоненту файла, иначе каждую компоненту файла увеличить на величину S . Массив вывести. Файл вывести при помощи процедуры.
7. |
Сформировать матрицу AN×M , вывести её. Получить из матрицы файлы |
|
F1, |
F 2 и F3, записывая в F1 строку, а в F 2 столбец, |
содержащие |
максимальный элемент матрицы. В F3 записать строку, |
и столбец в |
|
обратном порядке. Файлы вывести используя процедуру. |
|
|
8. |
Сформировать файл F целого типа. Из файла получить матрицу AN×M . |
Начиная с 1-ой и по ( N −1)-ую строки формировать, читая компоненты файла с начала, N -ую строку заполнить компонентами, читая файл с конца. Матрицу вывести, далее удвоить в ней отрицательные элементы и снова вывести. Если матрицу сформировать нельзя, то сделать сообщение. Значения N и M вводятся с клавиатуры. Для вывода матрицы написать процедуру.
9. Создать файл F вещественных чисел. Сформировать из файла матрицу AN×N , заполняя ее строками. Если для формирования матрицы не хватает компонент файла, то дописать числа 1,2,3,.... Далее в матрице увеличить в 10
раз её угловые элементы. Матрицу вывести до и после преобразования, воспользовавшись подпрограммой.
10. Создать числовой файл F . Найти сумму всех компонент и произведение отрицательных компонент файла. Получить из него два вектора: A и B . В вектор A последовательно записать положительные компоненты файла и в конец – полученную сумму, в вектор B записать сначала вычисленное произведение, а далее – отрицательные компоненты файла. Вектора A и B распечатать, используя подпрограмму.
7
11.В заданной матрице AN×M (матрицу вывести) строки, не содержащие ни одного нуля, переписать последовательно в файл F1, строки содержащие нули переписать в файл F 2 . Если файл не сформирован, сделать текстовое сообщение. При выводе файлов использовать подпрограмму.
12. Из матрицы AN×N (матрицу вывести), получить файл F , записывая в него минимальные элементы каждого столбца, в конец файла записать четные элементы последней строки. В файле вычислить сумму каждой второй компоненты и записать ее на место 1-ой компоненты. Файл вывести до и после преобразования, используя подпрограмму.
13. Элементы файла F поместить на главную и побочную диагональ матрицы AN×N . Отрицательные элементы полученного массива дописать в файл F . Файл (исходный и преобразованный) и матрицу вывести на экран. Для вывода файла воспользоваться подпрограммой.
14. Создать числовой файл F , вывести его. Из положительных компонент файла F получить квадратную матрицу AN×N максимального возможного размера, которую вывести. В конец файла записать сумму элементов главной
ипобочной диагонали. Для вывода файла использовать подпрограмму.
15.Сформировать матрицу AN×N , которую вывести. Строки с
отрицательным элементом на главной диагонали последовательно записать в файл F . В конец файла F дописать сумму первой и последней компонент, а затем первый и последний элемент матрицы A . Файл F вывести до и после преобразования при помощи процедуры.
16. Сформировать файл F целого типа, вывести его. Получить матрицу AN×M . Матрицу заполнять по столбцам, начиная с 1-го и по ( M −1)-ый столбец компонентами файла, читая их с конца. Последний столбец заполнять компонентами, читая файл с начала. Если матрицу сформировать нельзя, выдать сообщение об этом и в файл дописать недостающие элементы (единицы) и снова вывести. Для вывода файла воспользоваться подпрограммой.
8
17. Сформировать файл F целых чисел, вывести его. Найти сумму последних k компонент, где k – общее количество чётных компонент файла. Записать значение суммы в качестве первой компоненты файла. Файл снова вывести. Сформировать из F матрицу A3×4 , записав первые две строки, читая файл с начала, и последнюю строку, читая файл с конца. Если матрицу создать невозможно, сделать сообщение. Для вывода файла использовать подпрограмму.
18.Сформировать векторы A1N1 и A2N 2 целого типа, вывести их. Записать
вфайл F элементы вектора, имеющего меньшее количество нулей, затем другого вектора, далее записать максимальный и минимальный элементы из A1. Файл вывести. Для вывода и ввода векторов воспользоваться подпрограммами.
19.Ввести целую квадратную матрицу AN×N . Из положительных ее
элементов сформировать файл F (формирование файла вести, рассматривая матрицу по столбцам). После записи столбца матрицы дописывать в файл количество положительных элементов в столбце и среднее арифметическое их значение. Файл вывести. Далее отрицательные компоненты файла заменить их модулем и файл снова вывести. Для вывода файла воспользоваться процедурой.
20. Сформировать матрицу AN×N вещественного типа. Найти суммы элементов главной и побочной диагоналей. Записать в файл F сначала элементы диагонали, имеющей большее значение суммы, а затем элементы последней строки матрицы. В файле каждую вторую компоненту, начиная с середины файла, уменьшить вдвое. Файл F распечатать до и после изменения используя процедуру вывода.
9
21. Дана матрица AN×N . Строки матрицы, которые начинаются с положительного элемента, последовательно переписать в файл F . В конец файла дописать сумму максимальной и минимальной компоненты файла, а также первый и последний элементы матрицы. Файл до и после изменения вывести, используя процедуру.
22. Ввести две матрицы |
A1N×M 1 и A2N×M 2 , вывести их. |
Далее переписать |
|
построчно эти матрицы |
в файл F , чередуя строки |
матриц (сначала |
|
переписываем первую строку A1, потом первую строку |
A2 , |
потом вторую |
|
строку A1, вторую строку |
A2 и т.д.). В файле найти номер |
максимальной |
компоненты. Для ввода и вывода матриц использовать подпрограммы.
23.Ввести числовой файл F , вывести его. Определить произведение первых k ненулевых компонент файла и сумму последних k компонент. Сформировать из файла, читая его с конца, вектор B1, в конец вектора приписать найденные сумму и произведение. Далее сформировать вектор B2 , в который поместить каждую вторую компоненту файла F . Вектора распечатать при помощи подпрограммы. Если формирование вектора невозможно, то сделать об этом сообщение.
24.Ввести числовой файл F , вывести его. Переписать каждый второй положительный компонент файла в вектор B1. Четные компоненты файла поместить в вектор B2 . В конец каждого из векторов дописать числа 1,2,3,..., k , где k –количество отрицательных компонент файла. Векторы
вывести, используя процедуру.
25. Ввести две равноразмерных матрицы A1N×M и A2N×N , вывести их (для ввода и вывода воспользоваться подпрограммами). Сформировать из матриц файл F , переписывая построчно из матриц элементы в файл, чередуя матрицы при формировании каждого нового элемента файла. Далее определить упорядочен ли по возрастанию файл.
10