- •230201 Информационные системы и технологии
- •1.Линейные и разветвляющиеся вычислительные процессы.
- •2. Циклический вычислительный процесс. Структура «Повторение»
- •Арифметические циклы
- •Листинг программы.
- •3. Работа с одномерными массивами.
- •4. Работа с матрицами.
- •5. Работа со сложными структурами данных
4. Работа с матрицами.
Пример 4.1
Задана матрица, состоящая из 6 строк и 7 столбцов. Поменять местами элементы первого и последнего столбца.
Листинг программы.
Вариант 1
program Pr4_1;
{$APPTYPE CONSOLE}
uses SysUtils;
type matr_num=array[1..6,1..7] of integer;
var matr:matr_num;
i,j:integer;
m,n:integer;
{------------- Выводим матрицу на экран ---------------}
procedure smotr(matr1:matr_num);
begin
for i:=1 to m do
for j:=1 to n do
begin
write(matr1[i,j]:6);
if j=n then writeln;
end;
end;
{------------- Вводим элемент матрицы -------------------}
procedure prov_vvod(var elem:integer);
var st:string[3];
code:integer;
begin
repeat
readln(st);
val(st,elem,code);
until(code=0);
end;
{----------- Меняем местами элементы --------------------}
procedure change(var elem_1,elem_2:integer);
var rab:integer;
begin
rab:=elem_1;
elem_1:=elem_2;
elem_2:=rab;
end;
{-----------Основная программа -------------------------}
begin
write('m=');readln(m);
write('n=');readln(n);
writeln('Вводим матрицу ');
for i:=1 to m do
for j:=1 to n do
prov_vvod(matr[i,j]);
writeln('ˆИсходная матрица ');
smotr(matr);
for i:=1 to m do
change(matr[i,1],matr[i,n]);
writeln('Результат');
smotr(matr);
readln;
end.
Вариант 2
program Pr4_2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type matr_num=array[1..6,1..7] of integer;
var T:text;
st:string[8];
matr:matr_num;
i,j:integer;
m,n:integer;
{------------- Выводим матрицу на экран ---------------}
procedure smotr(matr1:matr_num);
begin
for i:=1 to m do
for j:=1 to n do
begin
write(matr1[i,j]:6);
if j=n then writeln;
end;
end;
{----------- Меняем местами элементы --------------------}
procedure change(var elem_1,elem_2:integer);
var rab:integer;
begin
rab:=elem_1;
elem_1:=elem_2;
elem_2:=rab;
end;
{----------- Основная программа -------------------------}
begin
write('m=');readln(m);
write('n=');readln(n);
{ Вводим имя файла с исходными данными}
write('File Name=');readln(St);
AssignFile(T,St);
Reset(T);
{ Вводим матрицу из файла}
for i:=1 to m do
for j:=1 to n do
Readln(T,matr[i,j]);
writeln(' Исходная матрица ');
smotr(matr);
for i:=1 to m do
change(matr[i,1],matr[i,n]);
writeln('Результат ');
smotr(matr);
closeFile(T);
readln;
end.
Задания для самостоятельного выполнения по теме «Работа с матрицами»
-
Матрица М состоит из 8 строк, 4 столбцов. Сформировать из ее ненулевых элементов одномерный массив М.
-
Матрица М состоит из 10 строк, 5 столбцов. Выяснить, есть ли в ней хотя бы один элемент, равный 10. Если есть, то переменной К присвоить значение 1, если нет, то 0.
-
Матрица МТ состоит из 9 отрок, 5 столбцов. Сформировать из ее элементов, расположив их столбец за столбцом, одномерный массив М.
-
Матрица М состоит из 7 строк, 9 столбцов. Вычесть из всех ее элементов, кроме последнего, соответствующие элементы последнего столбца.
-
Матрица М состоит из 5 строк, 7 столбцов. Расположить ее элементы в порядке возрастания по строкам. (Указание: можно использовать вспомогательный массив).
-
Матрица М содержит 7 строк, 9 столбцов. Расположить элементы в каждой строке в порядке возрастания.
-
Матрица Р состоит из М строк, N столбцов. Поменять местами первую строку с последней, вторую с предпоследней, и т.д.
-
Матрица содержит 7 строк, 4 столбца. Сгруппировать нулевые элементы в конце матрицы (Можно использовать вспомогательный массив).
-
Матрица М состоит из 6 отрок, 8 столбцов. Выяснить, сколько элементов в каждой строке превышают среднее арифметическое значение, определенное для этой отроки. Из найденных величин составить массив Р.
-
Матрица М состоит на 9 отрок, 8 столбцов. Выяснить, является ли минимальный элемент 2-ой строки минимальным и в своем столице. В зависимости от результата напечатать "ДА" или "НЕТ".
-
Матрица М состоит жз 4 строк, 6 столоцов. Сформировать матрицу М1, в каждой строке которой исходной матрицы соответствуют две отроки половинной, длины.
-
Матрица М состоит из 8 строк, 6 столбцов. Сформировать матрицу М1, в которой каждым 2 строкам исходной матрицы соответствует 1 строка двойной длины. Выяснить, имеется ли в матрице М элемент, являющийся максимальным в своем столбце и минимальным в своей строке . Если такой найдется, напечатать его координаты , если нет – напечатать соответствующее сообщение.
-
Матрица М состоит из К строк, Р столбцов. Если сумма элементов ее левой половины превышает сумму элементов правой половины, поменять местами 2-ой и предпоследний столицы.
-
Матрица М состоит ив 11 отрок в 11 столбцов. Поменять местами элементы, расположенные симметрично относительно 6-го столбца..
-
Матрица МТ состоит из 5 строк, 6 столбцов. Переставить отроки в порядке возрастания их максимальных элементов.
-
Матрица К состоит из 7 отрок, 8 столбцов. Расположить ее элементы в порядке возрастания по столбцам. (Можно использовать вспомогательный массив).
-
Матрица М состоит из 5 строк, 7 столбцов. Расположить элементы в каждом столбце в порядке возрастания.
-
Матрица М (6 строк, 7 столбцов) состоит из равного количества положительных и отрицательных элементов. Сгруппировать положительные элементы в верхней половине матрицы.
-
Матрица М состоит из 8 строк, 9 столбцов. Выяснить, есть ли среди ее элементов хотя бы два одинаковых. Напечатать "ДА" или "НЕТ" в зависимости от результатов анализа.
-
Матрица М состоит из 13 строк и 13 столбцов. Поменять местами элементы, симметричные относительно 7-ой строки.
-
Матрица МТ состоит из 13 строк, 13 столбцов. Поменять мостами элементы, расположенные симметрично относительно элемента М (7,7).
-
Матрица М состоит из 5 строк, 7 столбцов. Выяснить, есть ли в числе ее элементов хотя бы два различных. Напечатать "ДА" или "НЕТ" в соответствии с результатом анализа. Сформировать массив М1 из элементов матрицы М. Повторяющиеся элементы записывать только один раз.
-
Задана матрица В(8,8). Поменять местами элементы столбца, содержащего большее число положительных элементов, и элементы главной диагонали.
-
Задана матрица А(5,7). Преобразовать строки матрицы по следующему правилу: если число положительных элементов в строке больше числа отрицательных - расположить элементы строки в обратном порядке. В противном случае отрицательные элементы заменить нулем.
-
Матрица М состоит из 5 строк, 8 столбцов. Транспонировать ее.
-
Сформировать матрицу М1, вычтя из каждого элемента исходной ной матрицы М среднее арифметическое, вычисленное по всем ее элементам.
-
Матрица М состоит из 4 строк, 3 столбцов. Вычесть из всех строк, начиная со второй, первую строку.
-
Матрица М состоит из 7 строк, 9 столбцов. Найти максимальный по абсолютной величине элемент и поменять его местами с первым элементом.
-
Матрица М состоит из 5 строк, 9 столбцов. Сформировать матрицу МТ1, первая строка которой равна последней строке исходной матрицы, вторая - предпоследней и т.д.
-
Матрица М состоит из 8 строк, 5 столбцов. Поменять местами ее минимальный и максимальный элементы.
-
Матрица М состоит из 7 отрок, 9 столбцов. Умножить элементы всех столбцов, начиная со второго, на соответствующие элементы первого столбца.
-
Матрица М состоит из 6 строк, 5 столбцов. Умножить элементы в каждой из строк на номер этой строки.
-
Квадратная матрица М состоит из 6 строк, 6 столбцов. Вычесть из каждого ее элемента сумму элементов, расположенных на главной диагонали.
-
Матрица М состоит из 5 строк, 8 столбцов. Составить массив М1 из положительных, М2 - из отрицательных элементов матрицы.
