Текст программы.

 

PROGRAM KorrMas;

{ Лабораторная работа N 7 Вариант N 31

Обработка массива

А.Я.Умненькая, ст. гр. Я-007 }

TYPE

Massiv = array[1..13,1..10] of integer;

Stroka = string[30];

CONST Quest1: Stroka='Задайте число строк массива';

Quest2: Stroka='Задайте число столбцов массива';

VAR A :Massiv;

M,N,I,j : integer;

Fin : file of integer;

Fout : file of text;

{ Процедура ввода размеров массива }

PROCEDURE InpMN(Txt:Stroka; MaxK:integer;

Var Kol:integer);

Begin

WriteLn; WriteLn(Txt);

Repeat

Readln(Kol);

If Kol>MaxKol then

Writeln('Можно не более ',MaxK,'задайте снова');

until Kol<=MaxK;

End;

{ Процедура вывода массива в файл протокола }

PROCEDURE PrintMas(Txt: string; Var Mas: Massiv;

NStr,NKol: integer);

VAR i,j : integer;

Begin

Writeln(Fout,Txt);

For i:= 1 to NStr do

begin

For j:= 1 to Nkol do Write(Fout,Mas[I,j]:7);

WriteLn(Fout);

end;

End;

{ Функция вычисления суммы четных элементов заданной строки массива }

FUNCTION Sum(Var Mas: Massiv; N,St: integer)

:integer;

VAR j,S : integer;

Begin

S:=0;

For j:=1 to N do

If not Odd(Mas[St,j]) then S:=S+Mas[St,j];

Sum:=S;

End;

BEGIN { Основная программа }

InpMn(Quest1,13,M);

InpMn(Quest2,10,N);

Assign(Fout,'Umnik7.res');

ReWrite(Fout);

WriteLn(Fout,'Сумма четных элем. в последний столбец');

Assign(Fin,'D:\LAB1\DATI.BIN');

ReSet(Fin);

Seek(Fin,32);

for i:=1 to M do

for j:=1 to N do Read(Fin,A[I,j]);

Close(Fin);

PrintMas (' Исходный массив', A,M,N);

for I:=1 to M do A[I,N]:=Sum(A,N,I);

PrintMas (' Обработанный массив', A,M,N);

Close(Fout);

END.

Содержимое набора данных UMNIK7.RES:

 

Сумма четных элем. в последний столбец

Исходный массив

9 8 0 -7 0 -5 7 -5 5

6 9 9 2 -2 -8 3 -8 -9

8 -4 -4 1 3 6 4 0 -5

4 1 -2 4 2 1 -2 -6 -5

-1 5 0 9 4 -3 -6 -691 885

-709 800 382 -396 -140 -841 923 368 -686

737 624 169 -610 458 -188 -423 126 355

Обработанный массив

9 8 0 -7 0 -5 7 -5 8

6 9 9 2 -2 -8 3 -8 -10

8 -4 -4 1 3 6 4 0 10

4 1 -2 4 2 1 -2 -6 0

-1 5 0 9 4 -3 -6 -691 -2

-709 800 382 -396 -140 -841 923 368 328

737 624 169 -610 458 -188 -423 126 410


Варианты заданий

Таблица 26. Варианты заданий лабораторной работы №7

№ вар. Программа Процедуры (Функции) M<= N<= Файл с данными
В прямоугольном массиве с помощью функции найти элемент, у которого самая большая сумма "соседей". Найденный элемент и его индексы напечатать. Исходные числа из файла читать, начиная с 27 числа. 1) Распечатать исходный массив с помощью процедуры. 2) Построить функцию, которая для произвольного внутреннего элемента передаваемого ей массива находит сумму всех соседних (8 штук). DATF.TXT
В прямоугольном массиве с помощью процедуры убрать все строки, у которых оба конца – с четными значениями. Исходные данные из файла читать, начиная с 44 числа. 1) Печатать двумерный массив до и после корректировки с помощью процедуры. 2) Построить процедуру, которая удаляет (со сдвигом вверх всех нижележащих строк) заказанную строку передаваемого ей прямоугольного массива DATI.TXT
В прямоугольном массиве, найдя с помощью процедуры место минимального элемента, удалить строку и столбец, проходящие через него. Исходные числа из файла читать, начиная с 99 числа. 1) Печатать массив до и после корректировки с помощью процедуры. 2) Построить процедуру, которая находит в передаваемом массиве номер строки и номер столбца самого маленького элемента. DATI.BIN
Квадратный массив заполнить данными из файла, начиная с 21 числа. С помощью функции в исходном массиве поменять элементы главной диагонали с максимальными значениями в строке. 1) Исходный и полученный массивы печатать процедурой. 2) Построить функцию, которая возвращает номер максимального элемента заказанной строки прямоугольного массива. DATF.TXT
Одномерный символьный массив длиной 300 элементов заполнить символами из файла, начиная с начала. С помощью процедуры заполнить новый одномерный символьный массив символами из исходного массива без повторения символов. 1) Построить процедуру, которая в исходном массиве заменяет пробелом все вхождения первого встретившегося символа (не пробела) и возвращает этот стертый символ в вызывающую программу. 2) Печатать каждый массив с помощью процедуры.   SIMBOL. TXT
В квадратном массиве, используя процедуру сортировки, сделать все строки упорядоченными по возрастанию. Исходные числа из файла читать, начиная с 20 числа. 1) Печатать массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в заказанной строке передаваемого ей квадратного массива упорядочивает элементы по возрастанию методом выбора. DATF.TXT
Прочитать в одномерный строковый массив (строки по 80 символов, количество строк не более 50), текст составленной Паскаль-программы. Используя функцию, подсчитать количество операторов в тексте программы. Перед каждым "end" должен стоять символ ';'. 1) Составить процедуру подсчета и печати количества групп операторов (заключенных в скобки "begin ..end") в исходном массиве строк. 2) Составить функцию, возвра-щающую количество символов ';' в строке.   *.PAS
В прямоугольном массиве с помощью процедуры сделать все строки упорядоченными по убыванию. Исходные числа из файла читать, начиная с "К"-го числа, где К вводить с клавиатуры 1) Печатать массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в заказанной строке передаваемого ей прямоугольного массива упорядочивает элементы по возрастанию методом обмена. DATI.BIN
Заполнить одномерный массив из М элементов. Затем с помощью процедуры заполнить одномерный целочисленный массив длиной 10 элементов, в котором i-й элемент указывает, сколько чисел исходного массива лежит в диапазоне от (i–1)*10 до i*10. Исходные числа из файла читать, начиная с 6 числа. 1) Исходный и полученный массивы печатать процедурой. 2) Построить процедуру, которая подсчитывает, сколько чисел в передаваемом ей одномерном целочисленном массиве попадает в заказанный диапазон. 100.. 200   DATI.BIN
Одномерный массив строк длиной по 80 символов заполнить из файла. Используя функцию, найти, какая русская буква (не различая прописные и строчные) встречается чаще. К функции обращаться, передавая ей строчную и прописную буквы и символьную строку массива. 1) Распечатать исходный массив процедурой. 2) Составить функцию, возвра-щающую суммарное количество вхождений двух заданных символов в заданной строке длиной 80 символов.   RUS.TXT
Прямоугольный символьный массив размером 10x30 заполнить из файла начиная с 29 символа. С помощью процедуры заполнить два одномерных массива длиной 10 элементов каждый. В первом массиве – наиболее частые символы, а во втором – их количество в каждой строке исходного массива. Получен-ные массивы также распечатать. 1) Исходный массив печатать процедурой. 2) Построить процедуру, которая в заказанной строке произвольного символьного массива (размерами до 10х30) находит, какой символ встречается чаще всего и сколько раз.     SIMBOL. TXT
Заполнить исходную квадратную матрицу А числами из файла, начиная с 39-го числа. Используя процедуры, вычислить матрицу С=А*В, где В – транспонированная матрица А. 1) Печатать все массивы с помощью процедуры. 2) Построить процедуру транспонирования квадратной матрицы (размерами до 7х7). 3) Построить процедуру, перемножения двух квадратных матриц размерами до 7х7 (см. пояснения к 5 лабораторной). DATF.TXT
Прочитать в одномерный строковый массив (строки по 80 символов), количество строк не более 50, текст составленной Паскаль-программы. Используя функцию, подсчитать количество управляющих операторов в этой программе. Распечатать название и количество операторов каждого вида. Перед подсчетом перевести все латинские символы в прописные. 1) Составить процедуру печати двух массивов в форме: название оператора – количество вхождений. В процедуру передать строчный массив названий и числовой – количеств. 2) Составить функцию, возвра-щающую количество вхождений заданной строки в массиве из 50 строк по 80 символов. (Функцию использовать для строк: 'if', 'goto', 'for', 'case', 'while', 'repeat'.)   *.PAS
Используя процедуру заполнить одномерный целочисленный массив длиной 15 элементов, в котором каждый элемент указывает, сколько в исходном одномерном символьном массиве символов "а", "б" и т.д. до "п". Исходный массив заполнять из файла, пропустив 10 символов 1) Исходный массив печатать процедурой. 2) Построить процедуру, которая подсчитывает, сколько раз в передаваемом ей одномерном символьном массиве длиной N элементов встречается заказан-ный символ.   SIMBOL. TXT
В прямоугольном массиве с помощью функции найти элемент, у которого самая маленькая сумма соседних вместе с ним. Полученный элемент напечатать. Исходные числа из файла читать, начиная с 29 числа. 1) Печатать исходный массив с помощью процедуры. 2) Построить функцию, которая для произвольного внутреннего элемента передаваемого ей массива (размерами до 11x7), находит сумму элемента и всех соседних с ним (всего 9 штук). DATF.BIN
Прямоугольный символьный массив размером 20x30 заполнить символами из файла, пропустив 49 символов. С помощью процедуры в массиве найти и заменить на '*' элемент с самой маленькой суммой кодов соседних символов. 1) Построить процедуру, которая для заказанного внутреннего элемента массива подсчитывает сумму кодов восьми соседних элементов. 2) Печатать каждый массив с помощью процедуры. SIMBOL. TXT
Прямоугольный массив заполнить из файла каждым третьим числом. Используя логическую функцию распечатать для каждой строки исходного массива фразу "четных чисел больше" или "четных чисел не больше". 1) Распечатать исходный массив процедурой. 2) Составить функцию, возвра-щающую значение TRUE, если в заданной строке массива больше четных чисел и FALSE в противном случае.     DATI.BIN
В прямоугольном массиве с помощью процедуры сделать все строки упорядоченными по возрастанию. Исходные числа из файла читать, начиная с "К"-го числа, где К<10 вводить с клавиатуры. 1) Печатать массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в заказанной строке передаваемого ей прямоугольного массива упорядочивает элементы по убыванию методом выбора. DATF.TXT
Массив из M строк и пяти столбцов частично (первые три столбца) заполнить числами из файла, начиная с 33-го числа файла. Рассматривая первые три числа в каждой строке матрицы в качестве коэффициентов при нулевой, первой и второй степени Х, заполнить четвертый и пятый элементы значениями корней уравнения с помощью процедуры. 1) Построить процедуру, вычис-ляющую вещественные корни квадратного уравнения по трем передаваемым ей коэффициентам (если отсутствует один или оба вещественных корня, процедура должна возвращать значения корней, равные нулю). 2) Заполненный массив распе-чатать процедурой. - DATF.BIN
С помощью процедуры в исходном массиве сделать все строки упорядоченными по возрастанию. Перед обращением к процедуре копировать строку в одномерный массив, после – копировать обратно. Исходный массив заполнить числами из файла, начиная с 18-го. 1) Печатать массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в одномерном целочисленном массиве упорядочивает элементы по возрастанию методом выбора. DATI.BIN
Прямоугольный массив заполнить числами из файла, начиная с четвертого числа. С помощью функции в исходном массиве сделать элементы первой строки равными максимальному элементу соответствующего столбца. 1) Исходный и полученный массивы печатать процедурой. 2) Построить функцию, которая возвращает максимальное значение в заказанном столбце прямоугольного массива. DATI.TXT
В квадратном массиве, используя процедуру сортировки, сделать все столбцы упорядоченными по возрастанию (перед обращением к процедуре копировать столбец в одномерный массив, после – копировать обратно). Исходные числа из файла читать, начиная с 18-го. 1) Печатать двумерный массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в одномерном вещественном массиве упорядочивает элементы по убыванию методом выбора. DATF.BIN
Одномерный символьный массив длиной 300 элементов заполнить из файла, начиная с начала, и распечатать по 60 символов в строке. С помощью процедур сосчитать и распечатать, сколько трех-, шести- и девяти- символьных слов в массиве. 1) Построить процедуру, которая в передаваемом ей исходном массиве заменяет все разделители (символы: ' ', '.',',','-','(',')','"') на единый – точку. 2) Построить процедуру, которая в передаваемом ей массиве определяет количество слов заданной длины (слово – символы между двумя точками.)   SIMBOL. TXT
В прямоугольном массиве, используя процедуру, сделать все столбцы упорядоченными по возрастанию. Исходные числа из файла читать, начиная с 12-го. 1) Печатать массив до и после сортировки с помощью процедуры. 2) Построить процедуру, которая в заказанном столбце произвольного прямоугольного массива упорядочивает элементы по возрастанию методом обмена. DATI.BIN
Одномерный символьный массив длиной 300 элементов заполнить из файла и распечатать по 60 символов в строке. С помощью функции заполнить два массива из 26 элементов, соответственно буквой и числом ее повторений (перед этим все символы массива сделать прописными). Упорядочить массив букв по убыванию повторений методом пересчета. Распечатать оба массива. 1) Распечатать исходный массив процедурой. 2) Составить функцию, возвра-щающую количество вхождений заданного символа в строке.   LAT.TXT
Используя процедуры, по исходным квадратным массивам (матрицам) А и В вычислить матрицу С=А*В+А. Исходные числа из файла читать, начиная с 18-го. 1) Печатать все массивы с помощью процедуры. 2) Построить две процедуры, которые для двух квадратных матриц (размерами до 7х7) вычисляют третью матрицу той же размерности: первая – сумму, вторая – произведение. DATF.TXT
Одномерный символьный массив заполнить из числового файла, рассматривая его как символьный (пропуская концы строк). Используя функцию, заполнить два массива: цифр и числа их повторений. Пересортировать массив цифр по возрастанию числа повторений методом выбора. Распечатать оба массива до и после сортировки. 1) Распечатать исходный массив процедурой. 2) Составить процедуру печати массивов цифр и их повторений. 3) Составить функцию, возвращающую количество вхождений заданного символа в символьном массиве.   DATF.TXT
В прямоугольном вещественном массиве размером 9x7 заполнить первые пять столбцов числами, прочитанными из файла (читать начиная с 28 числа). С помощью этой процедуры в исходном массиве заполнить последний столбец 1) Построить процедуру, которая в заказанной строке прямоугольного массива 9х7 элементов находит самую большую по модулю разность двух элементов (не обязательно соседних) среди первых шести элементов и заносит найденное значение в седьмой элемент строки массива. 2) Заполненный массив распечатать процедурой     DATF.BIN
Прочитать в одномерный массив строк (длиной по 74 символа) первые 73 символа каждой строки файла DATF.TXT. Используя функцию, заполнить выходной одномерный строчный массив (элементы – строки длиной восемь символов) отдельными "словами" – изображениями чисел. 1) Составить строковую функцию, выбирающую из строки первое "слово" – первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами. 2) Печать выходного массива по пять "слов" в строке выполнить с помощью процедуры.   DATF.TXT
Одномерный массив длиной M элементов из файла, начиная с 106 числа. Используя процедуру, заполнить целый одномерный массив длиной десять элементов, в котором каждый элемент будет равен суммарному количеству цифр каждого значения (от нуля до девяти) во всех числах прочитанного массива. Распечатать этот массив. 1) Исходный массив печатать процедурой. 2) Построить процедуру, которая подсчитывает, сколько цифр каждого значения (от нуля до девяти) встречается в передаваемом ей целом числе. Использовать операцию вычисления остатка от целочисленного деления на десять (целые числа содержат меньше шести цифр). 100..   DATI.TXT
Прямоугольный массив заполнить числами из файла, начиная с 33-го. С помощью функции в исходном массиве сделать элементы последнего столбца, равными сумме всех элементов соответствующей строки. 1) Исходный и полученный массивы печатать процедурой. 2) Построить функцию, которая возвращает сумму четных по значению элементов заказанной строки прямоугольного массива. DATI.BIN