Обработка матрицы по столбцам.
10 — 17. Это же, что и для каждой строки (см. 1 — 5, 7 — 9), выполнить не для строк, а для столбцов матрицы. Например, вместо 1 в 10 для каждого столбца матрицы найти среднее значение среди положительных чисел и среднее значение среди отрицательных элементов и построить два одномерных массива, размерности которых соответствуют количеству столбцов матрицы. Вместо 8 в 16 из матрицы удалить все нулевые столбцы, т. е. столбцы, состоящие из одних нулей.
Обработка всей матрицы.
В задачах 18 — 20 разработать функцию для работы с одномерным массивом и использовать её для всей матрицы.
18. Это же, что и для каждой строки (см. 1), т. е. найти одно или два числа для всей матрицы в целом.
19. Даны матрицы A и B одинаковой размерности. Вычислить
¾ наименьшее среди положительных чисел матрицы.
20. Числа заданной матрицы, принадлежащие отрезку [a, b], увеличить в 100 раз, остальные уменьшить в 2 раза. Измененную матрицу оставить на том же месте.
21. Транспонировать квадратную матрицу, оставив новую на том же месте.
22. Умножить две матрицы, проверив согласованность их размерностей.
Обработка части матрицы.
23. Составить и использовать две логические функции со значением true (1) или false (0) для определения, является ли одно число простым и есть ли в двоичном представлении одного числа нуль. Входным параметром такой функции является одно число без индексов. Дана квадратная целочисленная матрица. Найти количество простых чисел и количество чисел, у которых в двоичной записи нет нулей:
1) — 2) на главной (побочной) диагонали;
3) в левом нижнем треугольнике относительно главной диагонали;
4) в правом нижнем треугольнике относительно побочной диагонали;
5) в верхнем треугольнике относительно главной диагонали;
6) в правом треугольнике относительно побочной диагонали.
Построение матриц.
24. Даны два одномерных массива a и b одинаковой размерности. Построить квадратную матрицу С такой же размерности, каждый элемент которой определяется по формуле
25. Даны две матрицы A и B одинаковой размерности. Построить матрицу С, каждый элемент которой определяетсяпо правилу:
26. Дан одномерный массив b размерности m. Построить матрицу
.
Уровень С
Преобразование матриц, сортировка.
В каждой строке матрицы поменять местами наибольший элемент с наименьшим элементом. Если в строке несколько наибольших элементов и (или) несколько наименьших, то поменять местами первый наибольший с последним наименьшим этой строки.
1. Поменять местами строки матрицы, в которых находятся первое отрицательное число первого столбца и последнее положительное число этого же столбца. Если в первом столбце нет отрицательных чисел, то первую строку матрицы поменять местами с той, в которой находится последнее положительное число первого столбца. Если в первом столбце нет положительных чисел, то последнюю строку матрицы поменять местами с той, в которой находится первое отрицательное число первого столбца.
2. В квадратной матрице поменять местами строку и столбец, на пересечении которых находится наибольший элемент всей матрицы. Если наибольших чисел несколько, то переставить строку с наименьшим индексом со столбцом с наибольшим индексом.
3. Из матрицы “удалить” строку и столбец, на пересечении которых находится наибольший элемент всей матрицы, “подтянув” элементы матрицы к левому верхнему углу. Элементам последней строки и последнего столбца присвоить нулевое значение.
4. Рассортировать строки целочисленной матрицы по следующему параметру строки:
1) количеству четных чисел в строке;
2) количеству чисел, у которых первая слева цифра четная;
3) наибольшей сумме цифр чисел строки;
4) сумме наибольших цифр чисел строки;
5) наибольшему элементу строки.
Замечание. Для решения подобных задач сортировки эффективнее использовать указатели и динамические матрицы, которые рассматриваются во второй части книги.
Матрицы специального вида.
6. Квадратная матрица A[n][n] называется симметричной относительно главной диагонали, если Aij=Aji для i<j. Записать такую матрицу в одномерный массив размерности n∙(n+1)/2, сохранив в нем элементы главной диагонали и расположенные выше ее. Вывести такой одномерный массив в виде симметричной матрицы.
7. Решить такую же задачу (см. 6), если матрица симметрична относительно побочной диагонали.
Указание к задачам 8 — 19. Симметричную относительно главной или побочной диагонали квадратную матрицу A[n][n] хранить в виде одномерного массива размерности n∙(n+1)/2, поместив в него элементы одного треугольника и диагонали.
8 — 9. Найти произведение вектора на симметричную относительно главной (побочной) диагонали матрицу.
10 —11. Найти произведение симметричной относительно главной (побочной) диагонали матрицы на вектор.
12 — 13. Найти сумму двух матриц, первая из которых симметрична относительно главной (побочной) диагонали.
14 — 15. Найти произведение двух матриц, первая из которых симметрична относительно главной (побочной) диагонали.
16 —17. Найти сумму двух матриц, симметричных относительно главной (побочной) диагонали.
18 — 19. Найти произведение двух матриц, симметричных относительно главной (побочной) диагонали.
20 — 21. Дана треугольнаяматрица, т. е. такая квадратная матрица, в которой все элементы выше главной (побочной) диагонали, имеют одинаковые значения, например, нуль. Записать такую матрицу в одномерный массив размерности n∙(n+1)/2, где n — количество строк и столбцов матрицы, сохранив в нем только элементы, расположенные ниже главной (побочной) диагонали. Вывести такой одномерный массив в виде матрицы, выводя и одинаковые (например, нулевые) ее значения.
22 — 33. Решить задачи 8 — 19 для треугольной матрицы с нулевым вторым треугольником со следующим требованием. Треугольную относительно главной (побочной) диагонали квадратную матрицу A[n][n] хранить в виде одномерного массива размерности n∙(n+1)/2, поместив в него элементы одного ненулевого треугольника.
СПИСОК РЕКоМЕНДУЕМОЙ ЛИТЕРАТУРЫ
Аленский, Н. А. Основы программирования на языке С++: учеб. пособие / Н. А. Аленский. — Минск: АПО, 2005. — 148 с.
Аленский, Н. А. Практическое руководство по языку C++: учеб. пособие / Н. А. Аленский. — Минск: АПО, 2007. — 276 с.
Крэйг, А. Освой самостоятельно Borland C++5 / А. Крэйг. — М. : Бином, 1997. — 719 с.
Дейтел, Х. М. Как программировать на С++ /Х. М. Дейтел, П. Дж Дейтел. — М. : Бином, 1998. — 1020 с.
Демидович, Е. Н. Основы алгоритмизации и программирования. Язык Си: пособие для студентов БГУИР / Е. Н. Демидович.— Минск, 2001. — 440 с.
Керниган Б. Язык программирования Си / Керниган Б. и др. — М. : Финансы и статистика, 1992.
Подбельский В. В. Программирование на языке Си / В. В. Подбельский, С. С. Фомин — М. : Финансы и статистика, 1999. — 600 с.
Подбельский В. В. Язык С++ : учеб. пособие / В. В. Подбельский. — М. : Финансы и статистика, 2000. — 560 с.
Шилдт, Г. Программирование на BORLAND C++ для профессионалов / Г. Шилдт. — Минск: ООО «Попурри», 1999. — 800 с.
Шилдт, Г. Самоучитель С++ / Г. Шилдт. — СПб. : БХВ, 2002. — 688 с.