Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник с исправлением.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
849.41 Кб
Скачать

3. Матрицы

3.1. Составить программу транспонирования квадратной матрицы.

3.2. Задана вещественная матрица A = { aij }, i = 1n, j = 1m. Составить программу формирования новой матрицы B = { bij }, i = 1n, j = 1m, каждая строка которой должна быть получена из соответствую­щей строки матрицы A путем упорядочения ее элементов в порядке убы­вания.

3.3. Составить программу построения по прямоугольной веществен­ной матрице A = { aij }, i = 1n, j = 1m логического вектора В = { bi }, i = 1 ¸ n, где bi имеет значение true, если наибольший элемент в строке с номером i матрицы A не больше заданного значения X, и значение falseв противном случае.

3.4. Составить программу формирования по вещественной квадратной матрице A = { aij }, i = 1 ¸ n, j = 1 ¸ m логического вектора В = { bi }, i = 1 ¸ n по правилу: bi присвоить значение true, если в строке с номером i матрицы есть хотя бы один отрицательный элемент, и значение falseв противном случае.

3.5. Задан двумерный целочисленный массив. Известно, что среди его элементов два и только два равны между собой. Составить программу нахождения координат этих элементов.

3.6. Заданы матрица A = { aij }, i = 1 ¸ n, j = 1 ¸ m и значение X. Составить программу формирования вектора B путем переписывания в него первых элементов каждой строки матрицы A больших X. Если в строке нет элемента, большего X, то записать ноль в вектор B.

3.7. Задана вещественная квадратная матрица A = { aij }, i, j = 1 ¸ n. Составить программу присвоения переменной y значения, равного скаляр­ному произведению строки k и столбца l (рассматриваемых как векторы), на пересечении которых находится наименьший элемент матрицы (в предположении, что такой элемент единственный)

n

y = al i x ai k .

i=1

3.8. Задана вещественная квадратная матрица A = { aij }, i, j = 1 ¸ n. Составить программу вычисления суммы элементов матрицы A, располо­женных в строках с отрицательным элементом на главной диагонали.

3.9. Составить программу построения по целочисленной матрице A = { aij }, i = 1 ¸ n, j = 1 ¸ m логического вектора В = { bi }, i = 1 ¸ n, присвоив элементу bi значение true, если в строке с номером i матрицы A число положительных элементов не меньше числа отрицательных элементов, и значение false в противном случае.

3.10. Задана вещественная квадратная матрица A = { aij }, i, j = 1 ¸ n. Составить программу построения вещественного вектора В = { bi }, i = 1 ¸ n по правилу:

если aii <0, то в качестве bi принять сумму элементов стро­ки с номером i, предшествующих первому по порядку отрицательному эле­менту; если aii 0, то в качестве bi принять сумму последних элементов строки с номером i, начиная с первого по порядку неотрицательного элемента.

3.11. Составить программу сортировки строк в вещественной квадратной матрице A = { aij }, i, j = 1 ¸ n по возрастанию значений сумм элементов строк.

Пояснения к программе

Суммы строк матрицы формируются в массиве S. Затем выполняется сортировка массива сумм строк: отыскивается индекс K максимального элемента и его место занимает последний элемент (его индекс — L), после чего меняются местами K-ая и L-ая строки в исходном массиве A, затем этот метод применяется к оставшимся строкам, кроме последней (она уже находится на своем месте) и т.д.

program SORT (input, output);

Type

Matrix = Array [1..10, 1..10] of Real;

Var

i, j, K, L : Integer; {параметры циклов и индексы}

N : Integer; {порядок матрицы}

A : Matrix; {исходная матрица}

S : Array [1..10] of Real; {суммы элементов строк}

R : Real; {промежуточная переменная}

Begin

Repeat

Writeln ('Введите порядок матрицы N, N <= 10');

ReadLn ( N )

Until N in [2..10];

Writeln ( 'Введите матрицу по строкам');

for i := 1 to N do

for j := 1 to N do

Read ( A[i,j] );

{Вывод исходной матрицы}

Writeln ('Исходная матрица A');

for i := 1 to N do

Begin

for j := 1 to N do

Write ( A[i,j] :8:1 );

Writeln

end;

{подсчет сумм элементов строк}

for i := 1 to N do

Begin

S[i] := 0;

for j := 1 to N do

S[i] := S[i] + A[i,j]

end;

{сравнение сумм и перестановка строк}

for i := 1 to N-1 do

Begin

K := 1; L := N - i + 1;

for j := 2 to L do

if S[ j ] > S[ K ] then

K := j;

{замена суммы переставляемой строки}

S[ K ] := S[ L ];

{перестановка строк через буферную переменную}

for j := 1 to N do

Begin

R := A[K,j];

A[K,j] := A[L,j];

A[L,j] := R

end

end;

{Вывод результирующей матрицы}

Writeln ('Отсортированная матрица');

for i := 1 to N do

Begin

for j := 1 to N do

Write ( A[i,j] :8:1 );

Writeln

End

End.

3.12. Получите целочисленную матрицу А размером n х m, для которой аij = i + 2j.

3.13. Пусть дана вещественная матрица размером n х m, в которой есть ненулевые элементы. Получите новую матрицу путем деления всех элементов дан­ной матрицы на ее наибольший по модулю элемент.

3.14. Все элементы с наибольшим значением в данной целочисленной квадратной матрице порядка n замените нулями, если эти элементы не принадлежат первой или последней строкам.

3.15. Пусть дана вещественная квадратная матрица порядка n. Найдите среднее арифметическое наибольшего и наименьшего значений ее элементов, расположен­ных ниже главной диагонали.

3.16. В данной вещественной матрице размером n х m найдите сумму эле­ментов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

3.17. В данной вещественной матрице размером n х m поменяйте местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственные.

3.18. Пусть дана вещественная матрица размером n х m, все элементы которой раз­личны. В каждой строке выберите элемент с наименьшим значением, затем среди этих чисел выберите наибольшее. Укажите индексы найденного эле­мента.

3.19. Пусть дано натуральное число n и целочисленная квадратная матрица по­рядка n. Получите b1 , b2 , ..., bn, где bi это:

а) значение первого по порядку положительного элемента i-й строки (если таких элементов нет, то принять bi = 1);

б) сумма элементов, расположенных за первым отрицательным элементом в i-й строке (если все элементы строки неотрицательны или отрицатель­ный элемент на последнем месте, то принять bi = 100);

с) сумма элементов, предшествующих последнему отрицательному элементу i-й строки (если все элементы строки неотрицательны, то принять bi = -1).

3.20. Пусть дана целочисленная матрица размером n х m. Найдите номера строк:

а) все элементы которых — нули;

б) элементы в каждой из которых одинаковы;

в) все элементы которых четны;

г) элементы каждой из которых образуют монотонную последовательность (монотонно убывающую или монотонно возрастающую);

д) элементы которых образуют симметричные последовательности.

3.21. Пусть даны натуральное число n, вещественное число х, вещественная мат­рица размером n х m. Получите последо­вательность b1 , b2 , ..., bn из нулей и еди­ниц, где bi = 1, если элементы i-й строки матрицы не превосходят х, и bi = 0 в противном случае.

3.22. Пусть дана вещественная квадратная матрица порядка n. В строках с отри­цательным элементом на главной диагонали найдите:

а) сумму элементов;

б) наибольший из элементов.

3.23. Пусть дана вещественная квадратная матрица порядка n. Относительно эле­ментов, расположенных в строках, начинающихся с отрицательного элемен­та, найдите суммы тех из них, которые расположены соответственно ниже, выше и на главной диагонали.

3.24. Пусть дана вещественная квадратная матрица порядка n. Получите целочи­сленную квадратную матрицу того же порядка, в которой элемент равен единице, если соответствующий ему элемент исходной матрицы больше элемента, расположенного в его строке на главной диагонали, и равен нулю — в противном случае.

3.25. Пусть дана вещественная квадратная матрица порядка n. Получите х1 хп + х2 хп-1 + ... + хn х1, где хiнаибольшее значение элементов i-й строки данной матрицы.

3.26. Пусть даны натуральное число n>2 и вещественная квадратная матрица порядка n. Постройте последовательность b1 , b2 , ..., bn, из нулей и единиц, в кото­рой bi = 1 тогда и только тогда, когда:

а) элементы i-й строки матрицы образуют возрастающую последователь­ность;

б) элементы i-й строки матрицы образуют возрастающую или убывающую последовательность.

3.27. Пусть дана целочисленная квадратная матрица порядка n. Выясните, име­ются ли в матрице ненулевые элементы, и если имеются, то укажите индексы:

а) первого из нулевых элементов;

б) всех нулевых элементов.

3.28. Пусть даны натуральное число n и вещественная квадратная матрица по­рядка n. Постройте последовательность b1 , b2 , ..., bn, из нулей и единиц, в которой bi = 1 тогда и только тогда, когда в i-й строке матрицы есть хотя бы один от­рицательный элемент.

3.29. Пусть даны натуральные числа n и m, вещественное число x, вещественная матрица размером nх m. Получите значение b1xn-1 + b2xn-2 + ... + bn, где bk — пер­вый по порядку положительный элемент в k-й строке матрицы (k = 1,..., п); если в k-й строке нет положительных элементов, то bk = 0,5.

3.30. Пусть дана вещественная квадратная матрица порядка n. Вычислите сумму тех из ее элементов, расположенных на главной диагонали и выше ее, кото­рые превосходят по величине все элементы, расположенные ниже главной диагонали. Если на главной диагонали и выше ее нет элементов с указанным свойством, то ответом должно служить сообщение об этом.

3.31. Будем называть соседями элемента с индексами i, j некоторой матрицы та­кие элементы, соответствующие индексы которых отличаются от i, j не более чем на единицу. Для данной целочисленной матрицы А размером nх m найдите матрицу В, состоящую из нулей и единиц, элемент которой bij равен единице, когда:

а) все соседи аij меньше самого элемента аij;

б) все соседи аij и сам элемент аij равны нулю;

в) среди соседей аij есть не менее двух элементов, совпадающих с аij .

3.32. Используя следующий фрагмент программы, заполните массив А по правилу

Aij = xij ;

Var

А : Array [1. .6, 1. .9] of Real;

X : Array [1..9] of Real;

3.33. Используя следующий фрагмент программы, получите массив В из массива А удалением nстроки и k-го столбца:

Var

А : Array [1..5, 1..7] of Real;

В : Array [1..4, 1..6] of Real;

n, k : 1..7;

3.34. Используя следующий фрагмент программы, из массива А получите массив В, присвоив его k-му элементу значение true, если выполнено указанное ниже условие, в противном случае присвойте значение false: