Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9 - Типизированные файлы и массивы

.pdf
Скачиваний:
7
Добавлен:
14.03.2016
Размер:
344.7 Кб
Скачать

Л. Р.

 

Студент

Иванов И. И.

 

Группа

ХХ-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