Дан двумерный массив размером 5х6, заполненный случайным образом. Поменять местами средние строки.
Вставить после столбцов, содержащих максимальный элемент массива,
столбец из нулей.
Удалить все столбцы, в которых первый элемент больше заданного числа
А.
Заменить максимальный элемент каждой строки на противоположный
Паскаль
Шаг 1: Создание и заполнение двумерного массива случайными числами размером 5х6.
Для начала, создадим двумерный массив размером 5х6 и заполним его случайными числами. В Паскале это можно сделать следующим образом:
```
const
rows = 5;
cols = 6;
var
arr: array [1..rows, 1..cols] of integer;
i, j: integer;
begin
// Заполнение массива случайными числами
Randomize; // Инициализация генератора случайных чисел
for i := 1 to rows do
for j := 1 to cols do
arr[i, j] := Random(100); // Генерация случайного числа от 0 до 99
end.
```
Шаг 2: Перестановка средних строк
Для перестановки средних строк нужно знать, какое количество строк является средним. В данном случае, средними являются 2 и 3 строки, так как количество строк равно 5.
```
var
temp: array [1..cols] of integer;
begin
// Перестановка средних строк
for j := 1 to cols do
begin
temp[j] := arr[2, j]; // Сохраняем содержимое второй строки
arr[2, j] := arr[3, j]; // Заменяем вторую строку третьей
arr[3, j] := temp[j]; // Заменяем третью строку сохраненной во временной переменной
end;
end.
```
Шаг 3: Вставка столбцов из нулей после столбцов, содержащих максимальный элемент
Для начала, найдем максимальный элемент в массиве и запомним его столбец. Затем, создадим новый массив с дополнительными столбцами и вставим столбцы из нулей после столбцов с максимальным элементом.
```
var
maxElement, maxCol, newCols: integer;
newArr: array [1..rows, 1..(cols+2)] of integer;
begin
// Поиск максимального элемента
maxElement := arr[1, 1]; // Пусть первый элемент в массиве будет максимальным
maxCol := 1;
for i := 1 to rows do
for j := 1 to cols do
if arr[i, j] > maxElement then
begin
maxElement := arr[i, j]; // Найден новый максимальный элемент
maxCol := j; // Запоминаем его столбец
end;
newCols := cols + 2; // Количество столбцов в новом массиве
// Вставка столбцов из нулей после столбца с максимальным элементом
for i := 1 to rows do
begin
for j := 1 to maxCol do
newArr[i, j] := arr[i, j]; // Копируем элементы до столбца с максимальным элементом
newArr[i, maxCol+1] := 0; // Вставляем столбец из нулей после столбца с максимальным элементом
for j := maxCol+2 to newCols do
newArr[i, j] := arr[i, j-1]; // Копируем элементы после столбца с максимальным элементом
end;
end.
```
Шаг 4: Удаление столбцов, в которых первый элемент больше заданного числа
Для начала, нужно определить заданное число А. Затем, пройтись по каждому столбцу и удалить те столбцы, в которых первый элемент больше числа А.
```
var
A, newCols: integer;
newArr: array [1..rows, 1..(cols+2)] of integer;
deleteCol: array [1..(cols+2)] of boolean;
begin
// Заданное число А
A := 10; // Задаем значение А
newCols := cols + 2; // Количество столбцов в новом массиве
// Удаление столбцов, в которых первый элемент больше заданного числа
for j := 1 to newCols do
begin
deleteCol[j] := arr[1, j] > A; // true, если первый элемент в столбце больше А
for i := 2 to rows do
deleteCol[j] := deleteCol[j] or (arr[i, j] > A); // true, если хотя бы один элемент в столбце больше А
if not deleteCol[j] then
begin
for i := 1 to rows do
newArr[i, j] := arr[i, j]; // Копирование столбца в новый массив
end;
end;
end.
```
Шаг 5: Замена максимального элемента каждой строки на противоположный
Для каждой строки нужно найти максимальный элемент и заменить его на противоположный. Для определения противоположного числа, можно использовать оператор "not" для булевых чисел или умножить на -1 для чисел.
```
var
maxElement, newCols: integer;
newArr: array [1..rows, 1..(cols+2)] of integer;
begin
newCols := cols + 2; // Количество столбцов в новом массиве
// Замена максимального элемента каждой строки
for i := 1 to rows do
begin
maxElement := arr[i, 1]; // Пусть первый элемент в строке будет максимальным
for j := 2 to newCols do
if arr[i, j] > maxElement then
maxElement := arr[i, j]; // Найден новый максимальный элемент
for j := 1 to newCols do
begin
if arr[i, j] = maxElement then
newArr[i, j] := -maxElement // Замена максимального элемента на противоположный
else
newArr[i, j] := arr[i, j]; // Копирование элементов
end;
end;
end.
```
В результате выполнения всех шагов получаем измененный двумерный массив `newArr`, который содержит средние строки поменяными местами, столбцы с максимальным элементом после которых добавлены столбцы из нулей, удалены все столбцы, в которых первый элемент был больше заданного числа А, и заменены максимальные элементы каждой строки на противоположные.