Массивы Матрица - Выписать из массива А в новый массив В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х – ближайшее по модулю к максимальному числу (последн
Описание
ЗАДАНИЕ 2 только
Вариант . РК Массивы
Цель работы:
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
ЗАДАНИЕ 2
Выписать из массива А в новый массив В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А.
Х – ближайшее по модулю к максимальному числу (последнее, если несколько).
Y – отрицательное.
Z – больше нуля и кратно 8.
Там условия x,y,z как в первой задаче.
Выписать из квадратной матрицы в один новый массив 2.1, затем 2.2.
2.1 Все числа, стоящие раньше X, по порядку чтения и подходящие под условие Z.
2.2 Все числа Y, находящихся в зоне по углам и на главной диагонали.
X – Ближайшее по модулю к максимальному числу (последнее, если несколько).
Y – Отрицательное.
Z – Больше нуля и кратно 8.
Пример:
Ввод:
-8 | 0 | 8 | 126 |
24 | -2 | -7 | 4 |
5 | 88 | 125 | -125 |
-88 | 1 | -1 | 100 |
Вывод (Х не выписывается):
8, 24, 88, -8, -2, -88

Программа в сделанном виде:




Показать/скрыть дополнительное описание
Рубежный контроль 2 . ЗАДАНИЕ 2 только Вариант . РК Массивы Цель работы: / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: ЗАДАНИЕ 2 Выписать из массива А в новый массив В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х – ближайшее по модулю к максимальному числу (последнее, если несколько). Y – отрицательное. Z – больше нуля и кратно 8. Там условия x,y,z как в первой задаче.
Выписать из квадратной матрицы в один новый массив 2.1, затем 2.2. 2.1 Все числа, стоящие раньше X, по порядку чтения и подходящие под условие Z. 2.2 Все числа Y, находящихся в зоне по углам и на главной диагонали. X – Ближайшее по модулю к максимальному числу (последнее, если несколько). Y – Отрицательное. Z – Больше нуля и кратно 8. Пример: Ввод: -808126 24-2-74 588125-125 -881-1100 Вывод (Х не выписывается): 8, 24, 88, -8, -2, -88 Программа в сделанном виде: 1.Запрашивает у пользователя ввод числа N, которое определяет размерность квадратной матрицы N*N. 2.Позволяет пользователю ввести элементы матрицы A по одному элементу в каждый цикл.
3.Выводит исходную матрицу A для проверки. 4.Находит максимальное число в матрице A, его индекс и число, ближайшее к максимальному по модулю (за исключением самого максимального числа). 5.Выводит максимальное число и значение X (ближайшее к максимальному числу) в матрице, если они найдены. Если такого числа X нет, программа сообщает об этом. 6.Создает новый массив B и заполняет его элементами из матрицы A, удовлетворяющими двум условиям: •Элемент находится в левой верхней части матрицы (рассматривается только часть матрицы до X). •Элемент положителен и делится нацело на 8. 7.Добавляет к массиву B элементы из матрицы A, которые находятся в углах матрицы (угловые элементы) и на главной диагонали, и которые отрицательны.
8.Выводит полученный массив B. 9.Завершает выполнение программы после ввода двух readln() для задержки консоли. Код: program project1; var n, m, i, j, X_index, maxChisloIndex: integer; maxChislo, minX, X, X_i, X_j: integer; A: array of array of integer; B: array of integer; begin writeln(\'Vvedite chislo N kvadratnoy matrici (N*N): \'); readln(n); writeln; SetLength(A, n, n); //Ввод элементов матрицы writeln(\'Vvedite elementi matricy po odnomu:\'); for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin write(\'Vvedite element A[\', i, \',\', j, \']: \'); readln(A[i, j]); end; end; writeln; // Вывод матрицы для проверки writeln(\'Ishodnaya matrica A:\'); for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin write(A[i, j]:4); end; writeln; end; maxChislo := -999999999; //присваиваем наименьшее, т.к.
ищем наибольшее minX := 999999999; //присваиваем наибольшее, т.к. ищем наименьшее X_index:= 0; //порядкомый номер максимального элемента // Ищем максимальное число в матрице и его индекс for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin if A[i, j] >= maxChislo then //если максимальное число в массиве повторяется, то берется последнее т.к. знак = begin maxChislo := A[i, j]; maxChisloIndex := i * n + j; //присваиваем порядковый номер в матрице end; end; end; // Ищем число самое ближайшее по модулю от максимального числа (Ищем Х) , если таких несколько берем последнее (знак <= в условии) for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin if ((Abs(maxChislo - A[i, j]) <= minX) and (A[i, j] <> maxChislo)) then //ищем наименьшую разницу между числами и чтобы они не были равны (неполучился 0) begin X := A[i, j]; minX := Abs(maxChislo - A[i, j]); X_index := i * n + j; //присваиваем порядковый номер в матрице X_i := i; //присваиваем индексы Х X_j := j; end; end; end; writeln; //Выводим if maxChislo <> -999999999 then begin writeln(\'Maksimalnoe chislo: \', maxChislo) ; if X_index >= 0 then writeln(\'Chislo X v dannoy matrice: \', A[X_i, X_j]) else writeln(\'Chislo X ne naideno, v dannoy matrice vse chisla ravni !\'); end; //Выполним условия задачи: Выпишем в новый массив В все числа в порядке чтения слева от Х, подходящие под условие Z, //выпишем все числа Y, находящиеся по углам и на главной диагонали m := 0; //колличество элементов массива В for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin if ((((i <= X_i) and (j < X_j)) or ((i < X_i) and (j <= X_j)) ) and (A[i, j] > 0) and (A[i, j] mod 8 = 0)) then //если индексы меньше индексов Х, делай (рассмотрим матрицу до Х) и условия подходят под Z begin m:= m + 1; SetLength(B, m); B[m-1] := A[i, j]; //присваиваем массиву В новый элемент из матрицы А end; end; end; for i := 0 to n - 1 do begin for j := 0 to n - 1 do begin if (((((i=(n-1)) and (j=0)) or ((i=0) and (j=(n-1)))) or (i = j)) and (A[i, j] < 0)) then //если (элемент находится в углу (2 угла - не учитывая на главной диагонали это (n-1),0 и 0,(n-1)) или на главной диагонали (индексы равны)) и условия подходят под Y begin m:= m + 1; SetLength(B, m); B[m-1] := A[i, j]; //присваиваем массиву В новый элемент из матрицы А end; end; end; writeln; // Выводим полученный массив B writeln(\'Poluchennii massiv B:\'); for i := 0 to High(B) do begin write(B); if i < m - 1 then write(\', \'); end; readln(); readln(); // два вызова readln() для задержки консоли end.
.
Файлы условия, демо
Характеристики решённой задачи
Список файлов
