Дан двумерный массив размером 5х6, заполненный случайным образом.  Поменять местами средние строки.
 Вставить после столбцов, содержащих максимальный элемент массива,
столбец из нулей.
 Удалить все столбцы, в которых первый элемент больше заданного числа
А.
 Заменить максимальный элемент каждой строки на противоположный
Паскаль

Vova2005002 Vova2005002    2   06.05.2021 19:37    10

Ответы
Ленабогатова1 Ленабогатова1  16.01.2024 15:01
Хорошо, вот подробное решение для данной задачи:

Шаг 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`, который содержит средние строки поменяными местами, столбцы с максимальным элементом после которых добавлены столбцы из нулей, удалены все столбцы, в которых первый элемент был больше заданного числа А, и заменены максимальные элементы каждой строки на противоположные.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Физика