Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Блок-схема. Листинг программы на Pascal



Читайте также:
  1. Блок-схема
  2. Блок-схема алгоритма
  3. Блок-схема определения затрат на оплату труда работника по параметрам
  4. Блок-схема предоставления муниципальной услуги
  5. Блок-схема противоэпидемических мероприятий в очаге инфекционного заболевания
  6. Блок-схема противоэпидемических мероприятий в очаге инфекционного заболевания.

 

 

 

Листинг программы на Pascal

program MaxMInExch;

const L=10;

type T2M = array[1.. L,1..L] of integer;

Tname = string[4];

TF = file of integer;

var A1,A2: T2M;

F1,F2:TF;

N1,N2,i1,i2,j1,j2:byte;

maxF1,maxF2,Npol1,Notr1,kchet1,kchet2,Npol2,Notr2:integer;

 

// процедура для ввода файла

procedure VvodF(var F:TF; const name:Tname);

var buf:integer;

begin

rewrite(F);

writeLn('введите первую компоненту файла ', name);

writeLn('999 - окончание ввода');

readLn(buf);

while buf<>999 do

begin

write(F,buf);

writeLn('введите следующую компоненту:');

readLn(buf);

end;

end;

 

// процедура для вывода файла

procedure VivodF(var F:TF; const name:Tname);

var buf:integer;

begin

reset(F);

writeLn('Выводим файл ', name);

while not EOF(F) do

begin

read(F,buf);

write(buf:5);

end;

writeLn;

end;

 

// процедура для подсчета числа положительных и отрицательных в файле

procedure PodschetPolOtr(var F:TF; var Npol,Notr: integer);

var kP,kO:byte;

buf:integer;

begin

reset(F);

kP:=0; // положительные

kO:=0; // отрицательные

while not EOF(F) do

begin

read(F,buf);

if buf>0 then

inc(kP)

else if buf<0 then

inc(kO);

end;

// передаем полученные значения в глобальный модуль

Npol:=kP;

Notr:=kO;

end;

 

// функция поиска максимума в файле

function MaxInF(var F:TF):integer;

var max,buf:integer;

begin

reset(F);

read(F,max);

while not EOF(F) do

begin

read(F,buf);

if buf>max then

max:=buf;

end;

MaxInF:=max;

end;

 

 

// процедура для вывода матрицы

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;

 

// функция для подсчета числа четных в матрице

function PodschetChet(const A:T2m; const N,M:byte):integer;

var kCh:integer;

i,j:byte;

begin

kCh:=0; // четные

for i:=1 to N do

for j:=1 to M do

if A[i,j] mod 2 = 0 then

inc(kCh);

// передаем полученные значения в глобальный модуль

PodschetChet:= kCh;

end;

 

// замена главной диагонали матрицы на ch

procedure ZamenaDiag(var A:T2m; const N: byte; const ch:integer);

var i:byte;

begin

for i:=1 to N do

A[i,i]:=ch;

end;

 

// формирование матриц из файла

procedure formMxFromFile(var F:Tf; var A1,A2:T2m; var i1,j1,i2,j2:byte);

var buf:integer;

begin

reset(F);

while not EOF(F) do

begin

read(F,buf);

if buf>0 then

begin

inc(j1);

if j1>N1 then

begin

j1:=1;

inc(i1);

end;

A1[i1,j1]:=buf;

end;

if buf<0 then

begin

inc(j2);

if j2>N2 then

begin

j2:=1;

inc(i2);

end;

A2[i2,j2]:=buf;

end;

end;

end;

 

// основная программа

begin

cls;

// инициализация файла F1

Assign(F1,'F1.dat');

VvodF(F1,'F1');

// инициализация файла F2

Assign(F2,'F2.dat');

VvodF(F2,'F2');

VivodF(F1,'F1');

VivodF(F2,'F2');

PodschetPolOtr(F1, Npol1, Notr1);

writeLn('в файле F1 положительных ', Npol1);

writeLn('в файле F1 отрицательных ', Notr1);

PodschetPolOtr(F2, Npol2, Notr2);

writeLn('в файле F2 положительных ', Npol2);

writeLn('в файле F2 отрицательных ', Notr2);

N1:=trunc(sqrt(Npol1+Npol2));

writeLn('матрица A1 имеет размерность: ', N1);

N2:=trunc(sqrt(Notr1+Notr2));

writeLn('матрица A2 имеет размерность: ', N2);

 

i1:=1;

j1:=0;

i2:=1;

j2:=0;

formMxFromFile(F1,A1,A2,i1,j1,i2,j2);

formMxFromFile(F2,A1,A2,i1,j1,i2,j2);

VivodMx(A1,N1,N1,'A1');

VivodMx(A2,N2,N2,'A2');

if PodschetChet(A1,N1,N1)>PodschetChet(A2,N2,N2) then

begin

writeLn('в матрице A1 больше четных');

maxF1:=MaxInF(F1);

writeLn('максимум файла F1:',maxF1);

ZamenaDiag(A1,N1,maxF1);

VivodMx(A1,N1,N1,'A1');

end

else

begin

writeLn('в матрице A2 больше четных');

maxF2:=MaxInF(F2);

writeLn('максимум файла F2:',maxF2);

ZamenaDiag(A2,N2,maxF2);

VivodMx(A2,N2,N2,'A2');

end;

close(F1);

close(F2);

end.

Список задач для лабораторной работы «типизированные файлы, массивы и подпрограммы»

 

1. Ввести 2 квадратные матрицы и , вывести их. Далее переписать в файл построчно ту из матриц, у которой модуль суммы отрицательных элементов под побочной диагональю окажется больше. В конец файла дописать полученные суммы. (в случае равенства предпочтение отдать матрице ). Полученный файл вывести. (прим.: при решении использовать подпрограммы)

 

2. Ввести 3 файла , и одинаковой длины . Вывести их друг под другом. Сформировать из этих файлов двумерный массив в котором верхняя строка – последовательно записанные элементы файла , средняя – элементы , а нижняя, соответственно, элементы . Матрицу отсортировать по первой строке и вывести ее как до, так и после преобразования. (прим.: при решении использовать подпрограммы)

 

3. Ввести 3 файла , , , вывести их. Упорядочить их по убыванию методом пузырька. Переписать в одномерный массив элементы того файла, чья сортировка потребует наибольшее число перестановок (в случае равенства переписать первый среди равных). Массив вывести. (прим.: при решении использовать подпрограммы)

 

4. Ввести 2 файла и одинаковой длины . Вывести их друг под другом. Далее сократить размер каждого из файлов на 1 заменяя в нем компоненты разностью соседних ячеек (от правой отнять левую). Файлы вывести. После этого сформировать одномерный массив элементами которого являются частные от деления соответствующих элементов на . Полученный массив вывести. (прим.: при решении использовать подпрограммы)

 

5. Ввести файл , из положительных элементов которого сформировать другой файл читая от конца к началу. Из этих файлов сформировать, соответственно, квадратные матрицы и максимально возможного размера записывая в них элементы построчно. В полученных матрицах поменять местами первую строку и главную диагональ. В процессе решения задачи выводить файлы и матрицы как до, так и после преобразований. (прим.: при решении использовать подпрограммы)

 

6. Ввести 2 числа и . Сформировать 2 квадратные матрицы и по правилу (факториал числа), вывести их. Переписать в файл четные строки матрицы и нечетные столбцы матрицы , файл вывести. После этого каждую третью компоненту файла заменить значением суммы и вновь его вывести. (прим.: при решении использовать подпрограммы

 

7. Ввести файлы и вещественных чисел, вывести их. Дважды протабулировать функцию сначала читая значения из файла , а затем из файла (для корректной табуляции файл нужно предварительно отсортировать по возрастанию). Во время табуляции сформировать двумерные массивы и (на экран вывести именно эти 2 матрицы минуя вывод при вычислении ). В данных матрицах ( и ) первые строки – копии соответствующих файлов ( и ), а вторые – значения функций в соответствующих точках. (прим.: при решении использовать подпрограммы)

 

8. Ввести 2 целочисленных файла и в которых первая компонента – количество строк, а вторая – количество столбцов в хранящихся в этих файлах матрицах. Третья компонента – сумма всех элементов в этих матрицах. Восстановить исходные матрицы , и вывести их. В случае невозможности проведения операции восстановления (элементов в файле меньше заявленного или размерность меньше 1) вывести об этом сообщение. Кроме того, вывести истинную и заявленные суммы элементов в матрицах. (прим.: при решении использовать подпрограммы)

 

9. Ввести 2 равноразмерные матрицы и . Вывести их. Из элементов этих матриц сформировать файлы и записывая построчно в первый файл , а во второй, соответственно, , нулевые элементы пропускать. Полученные файлы вывести. Далее их отсортировать по убыванию и снова вывести. (прим.: при решении использовать подпрограммы)

 

10. Ввести файлы и , вывести их. Поменять в них местами перекрестно максимальные и минимальные компоненты (т.е. max из первого файла идет на место max из второго и наоборот, для min аналогично). Далее элементы стоящие после первого встреченного в файле экстремального значения (максимума или минимума) переписать в одномерные массивы и соответственно. Массивы вывести. (прим.: при решении использовать подпрограммы)

 

11. Ввести файлы и , вывести их. Посчитать в файлах среднее арифметическое. Все элементы, значения которых отличаются от среднего арифметического соответствующего файла более чем в полтора раза по модулю (как в большую так и в меньшую сторону), переписать в одномерные массивы и , которые отсортировать по убыванию. Полученные массивы и файлы вывести. (прим.: при решении использовать подпрограммы)

 

12. Ввести 2 действительных файла и одинаковой длины . Вывести их. Далее сформировать массив по формуле , где , – соответственно максимальные по модулю компоненты файлов и . , ­– количество неотрицательных компонент в этих файлах, соответственно, меньших чем и . Массив вывести. (прим.: при решении использовать подпрограммы)

 

13. Ввести матрицу , вывести ее. Далее из четных строк матрицы сформировать файл , а из нечетных столбцов – файл , вывести их. В файле, где собственный наименьший элемент окажется наибольшим поменять местами максимум и минимум (в случае равенства минимумов в файлах и замену провести в обоих). (прим.: при решении использовать подпрограммы)

 

14. Ввести файлы и одинаковой длины , вывести их. Вставить все элементы файла в середину между его элементами, а элементы , соответственно, в середину между элементами (можно воспользоваться вспомогательным массивом). Показать полученные файлы. Каждый из файлов проверить на отсортированность по убыванию составляющих его элементов (вывести сообщение «отсортирован» или «не отсортирован»). (прим.: при решении использовать подпрограммы)

 

15. Ввести три одномерных массива , и . Вывести эти массивы. Переписать элементы из массивов в файл . Сначала переписать массив с наибольшим средним арифметическим, далее – с наименьшим, а потом оставшийся. Файл вывести найдя в нем значение и позицию максимального по модулю элемента. (прим.: при решении использовать подпрограммы)

 

16. Ввести файлы и , найти в них количество элементов и , стоящих после максимального четного (считать что в файлах есть хоть один четный элемент). Файлы вывести. Из этих двух файлов сформировать построчно квадратную матрицу максимально возможного размера читая в нее сначала , а затем . Первый и последний элементы матрицы домножить на сумму . Матрицу вывести. (прим.: при решении использовать подпрограммы)

 

 

17. Ввести 2 квадратные матрицы и , вывести их. В каждой из них упорядочить по возрастанию элементы главной диагонали. Матрицы вывести. Далее по столбцам переписать в файл ту из матриц, у которой меньше положительных элементов в нижнем треугольнике (в случае равенства переписать обе). Файл вывести. (прим.: при решении использовать подпрограммы)

 

18. Ввести матрицы и . Вывести их. Сформировать файлы и записывая в них периметр матрицы (начиная с первого элемента и далее против часовой стрелки). Полученные файлы вывести. В файле, где наименьший элемент встречается позже, все компоненты после наименьшего заменить нулями (в случае равенства позиций минимумов в файлах и замену провести в ). Файлы вывести. (прим.: при решении использовать подпрограммы)

 

19. Ввести 2 матрицы и , вывести их. Далее из суммы квадратов столбцов каждой из матриц сформировать файлы и . Из каждого элемента файлов извлечь квадратный корень. Файлы вывести. Элементы файла в обратном порядке дописать к файлу . снова отпечатать. (прим.: при решении использовать подпрограммы)

 

20. Ввести 2 матрицы и , вывести их. Максимальные элементы из каждого столбца поместить, соответственно, в файлы и . Вывести их вместе с сообщением о том в каком из файлов раньше встречается минимальный среди положительных элемент. (прим.: при решении использовать подпрограммы)

 

21. Ввести матрицы и , вывести их. В матрицах найти предмаксимальные элементы (по значению) и разделить все элементы этих матриц на соответствующие полученные значения. Далее переписать в файл элементы из матриц по столбцам. Файл вывести, поменять в нем максимальный и первый элементы местами и снова вывести. (прим.: при решении использовать подпрограммы)

 

22. Ввести матрицы и , вывести их. Далее из этих матриц сформировать файл записывая в него сначала элементы первой строки матрицы , далее первую строку , потом вторую строку из , вторую строку из и т.д. до -ой строки. Файл вывести. В полученном файле провести усреднение элементов по следующему правилу: , первый элемент вычисляется как . Файл вывести. (прим.: при решении использовать подпрограммы)

 

23. Ввести 3 квадратные матрицы , и . Вывести их. Найти в них максимальные по модулю элементы на побочных диагоналях , и . Далее переписать в файл отрицательные значения функции если , , а в файл , соответствующие значения . Полученные файлы вывести. (прим.: при решении использовать подпрограммы)

 

24. Ввести 3 файла , , , вывести их. Далее из них составить матрицу , где – это размерность длиннейшего файла. В матрице первая строка – файл , вторая – , третья (если элементов в файле не хватает, то конец строки заполнить нулями). Матрицу вывести. Далее в матрице поменять местами первый и последний столбцы. (прим.: при решении использовать подпрограммы)

 

25. Сформировать файлы и длины и по правилу последовательности Фибоначчи: , причем , . Полученные файлы вывести. Далее составить из файлов 2 квадратные матрицы и максимально возможного размера. Матрицы вывести. Транспонировать эти матрицы и снова вывести. (прим.: при решении использовать подпрограммы)

 

26. Ввести матрицу , вывести ее. Далее из четных строк сформировать файл , а из нечетных файл . Файлы вывести. Далее отсортировать каждый из файлов. Получить новый файл записывая в него сначала в прямом, а потом в обратном порядке пропуская нулевые элементы. Файлы вывести. (прим.: при решении использовать подпрограммы)

 

27. Ввести матрицы и , вывести их. Отсортировать в них четные столбцы по возрастанию, а нечетные по убыванию. Матрицы вывести. Переписать построчно в файл , сначала элементы матрицы превышающие величину , а потом , превышающие величину . Значения , и полученный файл вывести. (прим.: при решении использовать подпрограммы)

 

28. Ввести 2 матрицы и (), вывести их. В каждой из матриц найти все суммы четных элементов в соседних столбцах. Полученные суммы сохранить, соответственно, в файлах и . Файлы вывести, указав в каком из файлов больше положительных компонент. (прим.: при решении использовать подпрограммы)

 

29. Ввести матрицу , вывести ее. Найти в ней координаты максимума. Далее в матрице определить в какой из четвертей относительно максимума больше всего элементов (слева и выше; справа и выше; слева и ниже; или справа и ниже). Из этих элементов сформировать матрицу , а из оставшихся элементов файл , в конец файла приписать сумму его элементов, далее файл вывести. Для матрицы проделать аналогичные действия, сформировав при этом матрицу и файл . (прим.: при решении использовать подпрограммы)

 

30. Ввести матрицу , вывести ее. Найти в ней координаты минимума. Далее из элементов, расположенных правее и ниже найденного минимума сформировать матрицу , а из оставшихся элементов файл . Для матрицы проделать аналогичные действия, сформировав при этом матрицу и файл . Файлы вывести. Далее вывести еще раз тот файл, в котором больше положительных элементов совместно с найденным числом (прим.: при решении использовать подпрограммы)


Дата добавления: 2015-07-11; просмотров: 112 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.042 сек.)