Программы линейной структуры. Простейшие программы циклической структуры. Разветвления, циклы и разветвления. Простейшие алгоритмы обработки массивов, страница 24

Для определения соотношения между индексами одномерного и двумерного массивов следует иметь в виду, что длина пересылае­мой части строки зависит от номера строки т. е.   элемент A[0][ J] пересылается в (I*L+J)-ый эле­мент одномерного массива.

Для второй части задачи решение аналогично, но цикл по J организуется в пределах от 0 до I—1 и длина пересылаемой части строки на 1 меньше.

4. См. указание к задаче 3.

5. См. указание к задаче 3.

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

6. Диагональ переслать а одномерный массив. Найти макси­мальный элемент и его индекс М. Далее переставить M-ю строку со строкой с заданным номером.

7. См.  указание к задаче 6.

8. К-й столбец переслать в одномерный массив. Найти в этом массиве номер элемента, являющегося максимальным по модулю. Если максимальным по модулю является К-й элемент, перестанов­ку не выполнять.

9. См.  указание к задаче 8.

     10. Найти положение максимального по модулю элемента матрицы и выполнить последовательно перестановку строк и пере­становку столбцов.

11. Необходимо организовать цикл по номеру столбца и при каждом его прохождении обращать в 0 элементы, расположенные ниже главной диагонали (см, указание к задаче 14 уровня II).


Чтобы исключить возможность деления на 0 и повысить точ­ность вычислений перед преобразованием очередного J-гo столбца, нужно найти максимальный по модулю элемент в J-м столбце и пе­ревести его на главную диагональ соответствующей перестановкой строк.

12. Необходимо организовать цикл по номеру строки и при каждом его прохождении обращать в 0 элементы, расположенные правее главной диагонали (см. указание к задаче 15 уровня II). Перед преобразованием очередной 1-й строки нужно найти макси­мальный по модулю элемент в этой строке и соответствующей пере­становкой столбцов перевести его на главную диагональ.

13. Сначала заполнить нулями нижний треугольник матри­цы (см. указание к задаче 11), затем верхний (см. указание к зада­че 12).

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

15. Для выполнения преобразования найти максимальный amax и минимальный amin элементы в массиве. Далее, каждый эле­мент преобразовать по формуле

ai= ai K+ P;

где K, P — параметры преобразования — вычисляются из соотно­шений

amax  K+Р=1,

amin  K +P = -1.

Вопросы  для  самопроверки.

1. Что такое массив? Как осуществляется доступ к элементам массива? Какова нумерация индексов массива в С?

2. Для чего нужно описывать массивы? Как осуществляется описание массивов?

3. Как осуществить ввод вектора, матрицы: а) по строкам; б) по столбцам?

4. Как организовать ввод двух массивов одинакового размера; разных размеров?

5) Как организовать вывод вектора: а) в строку; б) в столбец; матрицы — по строкам?

6. Как вывести два вектора одинакового размера в два парал­лельных столбца?

7. Типовые алгоритмы обработки массивов: суммирование элементов: а) вектора; б) матрицы; вычисление следа матрицы (сум­мирование диагональных элементов).

8.  Алгоритм суммирования: а) векторов; б) матриц.

9. Алгоритм транспонирования матрицы с получением резуль­тата: а) в другом массиве; б) в том же массиве.

10. Алгоритм умножения: а) матрицы на матрицу; 6} матрицы на вектор.

11. Алгоритм удаления; а) элемента из вектора; б) строки из матрицы.

12. Алгоритм включения элемента: а) в заданную позицию вектора; б) в упорядоченный массив с сохранением упорядочен­ности.

13. Как поменять местами: а) элементы в векторе; б) строки в матрице?

14. Алгоритм поиска минимального (максимального) элемента массива: а) вектора; б) матрицы.

15. Алгоритм преобразования: а) матрицы в вектор; б) вектора в матрицу.

16. В чем особенности организации программ для обработки массивов произвольных размеров?