Задания для подготовки к работе

 

1. Изучить способы описания и инициализации многомерных массивов.

2. Изучить, как описываются и инициализируются указатели, массивы указателей, указатели на массивы.

3. Изучить операции над указателями.

4. Изучить модели памяти в Турбо Си.

5. Рассмотреть возможные способы размещения матриц в памяти и различные способы доступа к их элементам.

6. Разработать алгоритм и составить программу для решения задачи соответствующего варианта для каждого из следующих случаев задания матрицы:

а) число строк и число столбцов - константы;

б) число строк - константа, а число столбцов - исходное данное;

в) число строк - исходное данное, число столбцов - константа;

г) число строк и число столбцов - исходные данные.

Ввод, вывод и обработку матрицы описать отдельными функциями. Для случаев a) - г), где возможно, использовать одни и те же функции.

 

Варианты заданий

 

1. Дана матрица, все элементы которой различны. Назовем псевдодиагональю множество элементов этой матрицы, лежащих на прямой, параллельной прямой, содержащей элементы ai, n-i+1, где n– порядок матрицы. Найти сумму максимальных элементов псевдодиагоналей данной матрицы.

2. Определить, найдутся ли среди строк данной матрицы строки, состоящие из одних и тех же элементов.

3. Дана вещественная матрица. Найти скалярное произведение первой из строк, в которой находится наибольший элемент матрицы, на последнюю из строк, содержащую наименьший элемент.

4. Даны две прямоугольные матрицы A и B. Определить, верно ли что A=BТ.

5. Дан массив вещественных квадратных матриц. Вывести матрицы с наименьшей нормой. В качестве нормы матрицы взять максимум абсолютных величин ее элементов.

6.

 
 

Дана прямоугольная матрица размером m´n(m< n), все элементы которой различны. Найти среднее геометрическое модулей элементов в заштрихованной области (рис. 14).

Рис.14

7. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и наибольшим в столбце. Для данной целочисленной матрицы вывести индексы всех ее седловых точек.

8. Определить множество общих элементов строк данной матрицы.

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

10. Дан массив квадратных матриц. Определить, найдется ли в этом массиве пара взаимно обратных матриц.

11. Даны две матрицы одинаковых размеров. Определить, можно ли перестановкой строк одной из них получить другую.

12.

 
 

Найти минимальный элемент прямоугольной матрицы в заштрихованной области (рис.15), где max – максимальный элемент матрицы.

Рис.15

13. Дана матрица A. Найти произведение A×АТ.

14. Определить количество классов эквивалентных строк данной матрицы. Строки считать эквивалентными, если равны суммы их элементов.

15. Дана матрица. Если суммы элементов строк матрицы различны, то транспонировать матрицу.

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

17. Дана матрица. Упорядочить ее строки по убыванию первых элементов строк, если это возможно.

18. Дан массив квадратных матриц. Определить число матриц, строки которых упорядочены по невозрастанию элементов.

19.

 
 

Дана матрица, все элементы которой различны. Найти максимальный элемент матрицы в заштрихованной области (рис.16), где min – минимальный элемент матрицы.

Рис.16

20. Дана вещественная матрица. Упорядочить ее строки по неубыванию их наибольших элементов.

21. Дана прямоугольная матрица. Упорядочить столбцы матрицы по невозрастанию минимальных элементов столбцов.

22. Определить, верно ли, что для данной матрицы выполнено следующее условие: скалярное произведение каждой пары различных строк равно нулю, а скалярное произведение каждой строки на себя равно единице.

23. Дана матрица. Упорядочить ее строки по неубыванию сумм элементов строк.

24. Дан массив целочисленных квадратных матриц. Вывести матрицы, имеющие наибольшее число нулевых строк.

25. Дана матрица, все элементы которой различны. Поменять местами строки, в которых находятся максимальный и минимальный элементы.

26. Дана матрица. Определить k – количество "особых" элементов данной матрицы, считая элемент "особым", если в строке слева от него находятся меньшие элементы, а справа – бóльшие.

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

28. Дана матрица. Определить k – количество "особых" элементов матрицы, считая элемент "особым", если он больше суммы остальных элементов своего столбца.

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

30. Даны две матрицы одинаковых размеров. Определить, можно ли выбрать из каждой из них по строке с равными множествами элементов.

 

Контрольные вопросы

 

1. Как описываются и инициализируются многомерные массивы в языке Си?

2. Определите значение a[2][1] после каждого из следующих описаний

intа[З] [4]={{1,2},{3,4},{5,6}};

int а[З][4]={1,2,3,4,5,6}.

3. Имеется описание: inta[3][4]. Что представляют собой выражения: а, *а, **а, а[0], *а[0][0]?

Какие из этих выражений имеют одинаковые значения, а какие из них тождественны?

4. Напишите всевозможные выражения, тождественные a[i][j].

5. Определите объем памяти, выделяемой переменным fi и fp согласно следующему описанию:

Int *fi [10]; float (*fр)[10].

6. Есть описание функции

float sum_el (int *v, int n)

{ int i; float s;

for (s = i = 0; i < n, i++)

s += *v++;

return s;

}

Можно ли, не изменяя тела функции, изменить заголовок на следующий:

float sum_el (int v[ ], int n)?

 

ЛАБОРАТОРНАЯ РАБОТА №16

Свободные массивы строк

 

Цель работы: закрепление навыков работы с массивами указателей и строками.