
- •Введение
- •1. Вычисление функций
- •Пояснения к программе
- •Пояснения к программе
- •2. Одномерные массивы
- •3. Матрицы
- •Пояснения к программе
- •Var а : Array [1..N, 1..N] of Real;
- •4. Обработка текстов
- •Пояснения к программе
- •Пояснения к программе
- •5. Процедуры и функции
- •Пояснения к программе
- •Пояснения к программе
- •Пояснения к программе
- •6. Перечисляемый и диапазонный типы
- •Пояснения к программе
- •7. Записи
- •8. Множества
- •9. Файлы
- •10. Списки
- •Пояснения к программе
- •Пояснения к программе
- •Библиографический список
- •Приложения
- •Комбинации клавиш управления в среде Turbo Pascal
- •Сообщения об ошибках периода компиляции
- •Оглавление
3. Матрицы
3.1. Составить программу транспонирования квадратной матрицы.
3.2. Задана вещественная матрица A = { ai j }, i = 1 n, j = 1 m. Составить программу формирования новой матрицы B = { bij }, i = 1 n, j = 1 m, каждая строка которой должна быть получена из соответствующей строки матрицы A путем упорядочения ее элементов в порядке убывания.
3.3. Составить программу построения по прямоугольной вещественной матрице A = { aij }, i = 1 n, j = 1 m логического вектора В = { 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: