Добавил:
ФКН Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Семестр 1 / Алгоритмизация Лаба 6 язык С

.pdf
Скачиваний:
107
Добавлен:
05.12.2019
Размер:
273.8 Кб
Скачать

Алгоритмизация и программирование Си

Лабораторнаяработа№6

«Массив многомерный»

Работа состоит из 2 заданий. Номер варианта индивидуального задания – номер по списку в журнале группы. Если количество заданий К меньше вашего номера в списке, отнимаем от номера целое число раз К.

Оформить отчет о выполнении и результатах работы. В отчете привести индивидуальное задание, описание алгоритма в удобной форме, программный код, результаты тестовых расчетов.

Общие требования к работе (учитываются при оценивании):

1.соблюдение «хорошего стиля программирования» ;

2.понятный для пользователя интерфейс;

3.должны быть учтены все возможные значения входных данных;

4.не использовать без надобности дополнительные массивы!

Примечание к заданиям:

1.Все заданные массивы должны быть статическими и генерироваться автоматически.

2.Размеры массива М и N задаются в виде констант в исходном коде программы.

3.Матрица = двумерный массив. Первая размерность - количество строк, вторая размерность - количество столбцов.

4.i - номер строки, j - номер столбца.

5.Построить вектор – означает заполнить одномерный массив.

6.Отдельно должны быть описаны функции заполнения и печати массивов через указатели.

Задания (оценивание):

Задание 1 (2 балла) Выполните свой вариант индивидуального задания №1 (Приложение 1).

Задание 2 (2 балла). Выполнить свой вариант индивидуального задания №2 (Приложение 2).

Сроки и Бонусы:

Выдача задания – неделя №13. Сдача работы – неделя №15.

Задачи-бонусы:

1.(2 балла) Имеется n одинаковых на вид камней, некоторые из которых на самом деле различны по весу. Имеется прибор, позволяющий по двум камням определить, одинаковы они или различны (но не говорящий, какой тяжелее). Известно, что среди этих камней большинство (более n/2) одинаковых. Сделав не более n взвешиваний, найти хотя бы один камень из этого большинства.

Предостережение. Если два камня одинаковые, это не гарантирует их принадлежности к большинству.

Указание. Если найдены два различных камня, то их оба можно выбросить - хотя бы один из них плохой и большинство останется большинством.

2.(2 балла) Имеется квадратная таблица a[1..n, 1..n]. Известно, что для некоторого i строка с номером i заполнена одними нулями, а столбец с номером i - одними единицами (за исключением

их пересечения на диагонали, где стоит неизвестно что). Найти такое i (оно, очевидно, единственно). Число действий не превосходит C*n. (Заметим, что это существенно меньше числа элементов в таблице).

Указание к задаче 2. Рассмотрите a[i][j] как результат "сравнения" i с j и вспомните, что самый тяжелый из n камней может быть найден за n сравнений.

Лабораторная работа№6

Страница1

 

Алгоритмизация и программирование Си

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Индивидуальное задание 1.

 

 

 

 

 

 

 

 

Приложение 1.

 

 

Варианты к заданию 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана квадратная матрица А n-го порядка. Построить матрицу B, элемент bij

которой

 

равен сумме элементов данной матрицы, расположенных в области, определяемой

 

индексами i, j так, как показано на рисунке (область заштрихована).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

2

 

3

 

4

 

 

1

14

 

54

 

136

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

6

 

 

7

 

 

8

 

=>

14

6

 

34

 

99

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

10

 

 

11

 

 

12

 

54

34

 

11

 

54

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

14

 

 

15

 

 

16

 

 

136

 

99

 

54

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана квадратная матрица

А

n-го

порядка.

Построить матрицу B, элемент bij

которой

 

равен сумме элементов данной матрицы, расположенных в области, определяемой

 

индексами i, j так, как показано на рисунке (область заштрихована).

 

 

 

2

 

1

 

2

 

3

 

4

 

 

28

60

 

96

 

136

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

6

 

 

7

 

8

 

=>

27

57

 

 

90

 

126

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

10

 

 

11

 

12

22

46

 

72

 

100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

14

 

 

15

 

16

 

13

27

 

42

 

58

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана квадратная

матрица А n-го порядка. Построить матрицу B, элемент bij

которой

 

равен сумме элементов данной матрицы, расположенных в области, определяемой

 

индексами i, j так, как показано на рисунке (область заштрихована).

 

 

 

3

 

1

 

2

 

 

3

 

 

4

 

 

10

9

 

7

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

6

 

 

7

 

 

8

 

=>

36

30

 

 

22

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

10

 

11

 

12

78

63

 

45

 

24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

14

 

15

 

16

 

136

108

76

 

40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана квадратная матрица А n-го порядка. Построить матрицу B, элемент bij

которой

 

равен сумме элементов данной матрицы, расположенных в области, определяемой

 

индексами i, j так, как показано на рисунке (область заштрихована).

 

 

 

4

 

 

1

 

2

 

 

3

 

 

4

 

 

99

96

 

93

 

90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

6

 

 

7

 

 

8

 

=>

87

84

 

81

 

78

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

10

 

11

 

12

75

 

72

 

69

 

66

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

14

 

 

15

 

 

16

 

 

63

60

 

57

 

54

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

Для заданной целочисленной матрицы A размерностью N M сформировать матрицу B

такой же размерностью, в которой элемент равен 0 в том случае, если все соседи

 

соответствующего элемента матрицы A меньше его самого, и 1 в противном случае.

 

 

 

 

 

6

Дана матрица размера M N. Преобразовать элементы в следующем порядке: первая

строка слева направо, вторая строка справа налево, третья строка слева направо,

 

четвертая строка справа налево и т. д.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В данной целочисленной квадратной матрице порядка N поменять местами строку, в

7

которой расположен элемент с наибольшим значением, со строкой, содержащей элемент

 

с наименьшим значением (предполагается, что такие элементы единственны).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

aij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

Определить норму заданной матрицы A=║aij║, т. е. число maxi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

Лабораторная работа№6

Страница2

Алгоритмизация и программирование Си

9

Определить норму заданной матрицы В=║bij║, т.е. число maxj

 

 

 

bij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расстояние между каждой k-ой и l-ой строками матрицы А = ║aij║ определяется как

10

n

akj

 

alj

 

 

 

 

 

 

 

 

*

. Указать номер строки, максимально удаленной от первой строки матрицы.

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подсчитать количество строк целочисленной квадратной

матрицы порядка n, все

11значения которых одинаковые (в одной такой строке могут быть все 5, в другой - все 8).

Найти максимальный среди всех элементов тех строк заданной матрицы, которые

12упорядочены (либо по возрастанию, либо по убыванию).

Подсчитать количество столбцов целочисленной квадратной матрицы порядка n,

13которые составлены из попарно различных чисел.

Даны целые положительные числа M, N, число D и набор из M чисел. Сформировать матрицу размера M N, у которой первый столбец совпадает с исходным набором чисел,

14а элементы каждого следующего столбца равны сумме соответствующего элемента предыдущего столбца и числа D (в результате каждая строка матрицы будет содержать элементы арифметической прогрессии).

Индивидуальное задание 2.

Приложение 2.

Варианты к заданию 2.

Дана целочисленная матрица M N. Переставляя строки заданной матрицы,

1расположить их в соответствии с ростом характеристик. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов.

Дана целочисленная матрица M N. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Характеристикой столбца 2 целочисленной матрицы назовем сумму модулей его отрицательных нечетных

элементов.

Дана матрица размера M N. Поменять местами столбец с номером 1 и последний из

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

Дана матрица размера M N. Поменять местами столбец с номером N и первый из

4столбцов, содержащих только отрицательные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений.

Дана квадратная матрица A порядка M. Найти сумму элементов каждой ее диагонали,

5параллельной главной (начиная с одноэлементной диагонали A1,M).

Дана матрица размера M N. Элемент матрицы называется ее локальным минимумом,

6если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.

Элемент матрицы называется седловой точкой, если он является одновременно

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

Даны две целочисленные квадратные матрицы порядка n. Построить вектор b={bi}i=1..n,

8

элементы которого bi =1, если выполняются условия, и bi =0 в противоположном случае.

Условие - все элементы i-ой строки первой матрицы больше соответствующих элементов i-ой строки второй матрицы;

Лабораторная работа№6

Страница3

 

Алгоритмизация и программирование Си

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Даны две целочисленные квадратные матрицы порядка n. Построить вектор b={bi}i=1..n,

9

элементы которого bi =1, если выполняются условия, и bi =0 в противоположном случае.

 

Условие - все элементы i-ых строк первой и второй матриц отрицательны;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Даны две целочисленные квадратные матрицы порядка n. Построить вектор b={bi}i=1..n,

10

элементы которого bi =1, если выполняются условия, и bi =0 в противоположном случае.

Условие - i-ые строки первой и второй матриц содержат вместе не более трех

 

 

положительных элементов;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Даны две целочисленные квадратные матрицы порядка n. Построить вектор b={bi}i=1..n,

11

элементы которого bi =1, если выполняются условия, и bi =0 в противоположном случае.

Условие - количество

отрицательных и

неотрицательных элементов i-ой строки

 

первой матрицы совпадают с количеством отрицательных и неотрицательных

 

элементов i-ой строки второй матрицы.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана действительная квадратная матрица порядка 2n. Не используя дополнительные

 

массивы, получить новую матрицу, переставляя ее блоками размера n*n соответственно:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

1

 

 

2

 

 

3

 

 

4

 

 

 

9

 

 

10

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

6

 

 

7

 

 

8

 

=>

 

13

 

 

14

 

 

5

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

10

 

 

11

 

 

12

 

 

11

 

 

12

 

 

3

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

14

 

 

15

 

 

16

 

 

 

15

 

 

16

 

 

7

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана действительная квадратная матрица порядка 2n. Не используя дополнительные

 

массивы, получить новую матрицу, переставляя ее блоками размера n*n соответственно:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

1

 

 

2

 

 

3

 

 

4

 

 

 

11

 

 

12

 

 

9

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

6

 

 

7

 

 

8

 

=>

 

15

 

 

16

 

 

13

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

10

 

 

11

 

 

12

 

 

3

 

 

4

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

14

 

 

15

 

 

16

 

 

 

7

 

 

8

 

 

5

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дана действительная квадратная матрица порядка 2n. Не используя дополнительные

 

массивы, получить новую матрицу, переставляя ее блоками размера n*n соответственно:

14

 

 

1

 

 

2

 

 

3

 

 

4

 

 

 

11

 

 

12

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

6

 

 

7

 

 

8

 

=>

 

15

 

 

16

 

 

5

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

10

 

 

11

 

 

12

 

 

3

 

 

4

 

 

9

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

14

 

 

15

 

 

16

 

 

 

7

 

 

8

 

 

13

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа№6

Страница4