Варианты индивидуальных заданий

Министерство образования и науки РФ

Тверской государственный технический университет

Кафедра электронных вычислительных машин

 

 

Обработка матриц

 

 

Методические указания

к лабораторной работе № 4 по дисциплине

«Программирование на языках высокого уровня»

для студентов специальности 220100 (ВМКСС)

 

Тверь, 2016


Цель работы

Приобретение и закрепление навыков работы с двумерными массивами (матрицами).

Теоретический материал

Большинство вариантов индивидуальных заданий требует реализации типовых алгоритмов, выполняющих обработку прямоугольной матрицы по строкам или по столбцам. Тип требуемого алгоритма обработки всегда может быть определен при внимательном чтении индивидуального задания. При возникновении затруднений на этом этапе целесообразно проконсуль­тироваться с преподавателем.

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

Обработка матриц по строкам

Дана матрица А[ M, N]. Определить номер первой ее строки, в которой сумма четных элементов совпадает с суммой нечетных.

Начало

      Ввод размеров матрицы M и N

      Ввод элементов матрицы А[M,N]

      Флаг = нет

      Для i от 0 До M

                CуммаЧетных = 0

                CуммаНечетных = 0

                Для j от 0 До N

                         Если– четный, То

                                  CуммаЧетных = CуммаЧетных + A[i,j]

                         Иначе

                                  CуммаНечетных = CуммаНечетных + A[i,j]

                         Все-Если

                Все-Для- j

                Если CуммаЧетных = CуммаНечетных, То

                         Флаг = Да

                         ПрерватьЦикл

                Все-Если

      Все-Для- i

      Если Флаг = Нет, То

                Печать «Такой строки в матрице нет»

      Иначе

                Печать «Суммы совпадают в строке» + i

      Все-Если

Конец

Обработка матриц по столбцам

Дана матрица А[ M, N]. Поменять местами столбцы этой матрицы, которые имеют максимальное и минимальное произведение отрицательных элементов.

Начало

      Ввод размеров матрицы M и N

      Ввод элементов матрицы А[M,N]

      МинПроизв = МаксимальноеЧисло

МаксПроизв = МинимальноеЧисло

СтолбМин = -1

СтолбМакс = -1

Для j от 0 До N

    Произведение = 1

    Для i от 0 До M

              Если A[i,j] < 0, То

                       Произведение = Произведение * A[i,j]

              Все-Если

Все-Для- i

    Если Произведение < МинПроизв, То

              МинПроизв = Произведение

СтолбМакс = j

    Все-Если

    Если Произведение > МаксПроизв, То

              МаксПроизв = Произведение

СтолбМин = j

    Все-Если

Все-Для- j

Если СтолбМакс = -1 И СтолбМин = -1, То

    Печать «Отрицательных элементов в матрице нет»

Иначе Если СтолбМакс = СтолбМин, То

    Печать «Отрицательные элементы только в одном столбце»

Иначе

    Для i от 0 До M

              Х = A[i, СтолбМакс]

              A[i, СтолбМакс] = A[i, СтолбМин]

              A[i, СтолбМин] = Х

Все-Для- i

Печать матрицы А[M,N]

Все-Если

Конец

Обработка квадратных матриц

Дана матрица А[ N, N]. Заменить все нечетные элементы этой матрицы, лежащие ниже главной диагонали, на произведение четных элементов, расположенных выше главной диагонали.

Начало

      Ввод размера матрицы N

      Ввод элементов матрицы А[N,N]

Произведение = 1

Флаг = Нет

Для i от 0 До N

    Для j от 0 До N

              Если i < j  И A[i,j] - четный, То

                       Произведение = Произведение * A[i,j]

                       Флаг = Да

              Все-Если

Все-Для- j

Все-Для- i

Если Флаг = Нет, То

    Печать «Четных выше диагонали в матрице нет»

Выход Из Программы

Все-Если

Флаг = Нет

Для i от 0 До M

    Для j от 0 До N

              Если A[i,j] - нечетный, То

                  A[i,j] = Произведение

Флаг = Да

              Все-Если

Все-Для- j

Все-Для- i

Если Флаг = Нет, То

    Печать «Нечетных ниже диагонали в матрице нет»

Иначе

Печать матрицы А[M,N]

Все-Если

Конец

Указания к работе

Разработать и отладить программу, в которой реализовать алгоритм обработки двумерного массива в соответствии с заданием. При необходимости (если алгоритм обработки при этом упрощается) разрешается использовать вспомогательные массивы.

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

Варианты индивидуальных заданий

 

 (Сложность 1)

1. Дана матрица А[m,n]. Определить сумму минимальных элементов строк этой матрицы.

2. Дана матрица А[m,n]. Определить произведение максимальных элементов столбцов этой матрицы.

3. Дана матрица А[m,n]. Определить номер первого столбца этой матрицы, не содержащего четных элементов.

4. Дана матрица А[m,n]. Определить номер последней строки этой матрицы, содержащей хотя бы один ноль.

5. Дана матрица А[m,n]. Найти произведение четных элементов каждой строки и определить номер строки, где это произведение минимально.

6. Дана матрица А[m,n]. Определить номер первой строки, не содержащей ни одного положительного элемента.

7. Дана матрица А[m,n]. Определить количество строк, не содержащих ни одного нечетного элемента.

8. Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента.

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

10. Дана матрица А[m,n]. Определить количество строк, имеющих четную сумму элементов, но нечетное их произведение.

 

(Сложность 2)

11. Дана матрица А[m,n]. Поменять местами максимальный и минимальный элемент каждой строки.

12. Дана матрица А[m,n]. Сформировать массив В размером [m], поместив туда количество чётных элементов каждой строки матрицы.

13. Дана матрица А[m,n]. Найти первый столбец, сумма элементов которого равна сумме элементов первой строки.

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

15. Для заданной матрицы размером М на М найти такое число k, что k -я строка матрицы совпадает с k -м столбцом.

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

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

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

19. Ввести матрицу А[m,n]. Элементы тех строк, которые образуют возрастающую последовательность, уменьшить на 1, а тех, которые образуют убывающую последовательность, увеличить на 1.

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

 

(Сложность 3)

21. Ввести матрицу А[m,n]. Поменять местами столбцы с минимальным и максимальным количеством нулей.

22. Ввести матрицу А[m,n]. Поменять местами строки, в которых находятся первый и последний четный элементы.

23. Дана матрица А размером m × n, найти такой столбец, в котором сумма нечётных элементов максимальна, и изменить порядок элементов в нём на обратный.

24. Дана матрица n × n элементов. Найти сумму всех нечётных элементов выше главной диагонали и заменить этой суммой все чётные элементы ниже главной диагонали.

25. Ввести матрицу А[m,n]. Поменять местами соседние столбцы с одинаковым количеством отрицательных элементов.

26. Ввести матрицу А[m,n]. Заменить максимальный и минимальный элементы каждого столбца на сумму элементов, расположенных между ними.

27. Ввести матрицу А[m,n]. Заменить строки, в которых количество положительных и отрицательных элементов совпадают, строкой, где находится максимальный элемент матрицы.

28. Ввести матрицу А[m,n]. Заменить столбцы, имеющие четное количество отрицательных элементов, столбцом, где находится минимальный элемент матрицы.

29. Дана матрица n × n элементов. Если количество нечётных элементов выше главной диагонали четное, то заменить все эти элементы максимальным элементом главной диагонали, а если нечетное – то минимальным ее элементом.

30. Дана матрица n × n элементов. Найти сумму всех нечётных элементов выше главной диагонали и заменить этой суммой все чётные элементы ниже главной диагонали.

 

(Сложность 4)

31. Дана матрица А[m,n]. Если сумма её чётных элементов больше суммы нечётных, то переставить первую и последнюю строки. Иначе переставить первый и последний столбцы.

32. Осуществить циклический сдвиг элементов матрицы размерности m × n вправо на k элементов таким образом: элементы каждой строки сдвигаются вправо, выходящие за пределы строки переносятся в начало следующей строки, элементы последней строки – в первую строку.

33. Дана матрица А[m,n], выполнить циклический сдвиг вправо на одну позицию элементов каждой строки, находящихся между минимальным и максимальным элементом этой строки.

34. Дана матрица А[n,n], упорядочить по возрастанию элементы главной диагонали.

35. Напишите программу, которая находит первое положительное число матрицы и меняет местами строку, в которой находится это число с последней строкой матрицы.

36. Дана матрица А[m,n], выполнить перенос максимального элемента каждого столбца в первую строку этого же столбца, сдвинув элементы, находившиеся выше него на один вниз.

37. Дана матрица А[m,n], выполнить циклический сдвиг всех ее столбцов, начиная со второго, так, чтобы максимальный элемент каждого столбца оказался в той же строке, что и максимальный элемент первого столбца.

38. Дана матрица А[m,n]. Поменять местами каждые две рядом расположенные строки, если максимальные элементы в них имеют одинаковую четность.

39. Дана матрица А[m,n]. Если минимальный элемент строки матрицы четный, выполнить циклический сдвиг этой строки вправо, чтобы этот элемент оказался в последнем столбце. Иначе выполнить циклический сдвиг строки влево, чтобы этот элемент оказался в первом столбце.

40. Дана матрица А[m,n]. Найти и напечатать значения всех седловых точек этой матрицы. (Седловой точкой называется элемент, имеющий минимальное значение в своей строке, но максимальный в своем столбце.)

 

(Сложность 5)

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

42. Дана целочисленная прямоугольная матрица. Поменять местами первую и последнюю строки матрицы, которые содержат одинаковые элементы.

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

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

45. Дана матрица А[m,n]. Расположить строки этой матрицы в порядке убывания их максимальных элементов.

46. Дана матрица А[m,n]. Поменять местами строки этой матрицы, которые содержат максимальное и минимальное количество одинаковых элементов.

47. Дана матрица А[n,n]. Выполнить циклический сдвиг каждой строки так, чтобы ее минимальный элемент оказался на побочной диагонали. Направление сдвига выбрать от позиции минимального элемента к элементу побочной диагонали этой строки.

48. Дана матрица А[ m ,n]. Создать из неё матрицу B [ m -1, n -1], элементы которой равны максимальному из элементов матрицы А, находящихся левее соответствующего столбца и выше соответствующей строки (элемент B [0,0] положить равным 0).

49. Дана матрица А[n,n]. Поменять местами столбцы, содержащие минимальный и максимальный элементы главной диагонали этой матрицы.

50. Дана матрица А[n,n]. Поменять местами строки, содержащие минимальные элементы главной и побочной диагоналей.

 

(Сложность 6)

51. Дана матрица А[m,n]. Удалить из неё те столбцы, в которых суммы чётных и нечётных элементов совпадают.

52. Дана матрица А[m,n].Удалить из этой матрицы все строки, которые состоят из тех же чисел, что и первая строка (несмотря на количество и порядок элементов).

53. Дана матрица А[m,n].Удалить из неё строку, содержащую максимальный чётный элемент.

54. Дана матрица А[m,n].Удалить из неё столбец, содержащий максимальное число чётных элементов.

55. Дана матрица А[m,n]. Удалить все строки, в которых число четных элементов больше числа нечетных.

56. Дана матрица А[m,n], элементы которой не равны нулю. Удалить столбец этой матрицы, который содержит минимальный по абсолютной величине элемент этой матрицы.

57. Дана матрица А[m,n]. Создать из неё матрицу B [ m -1, n -1] путём удаления строки и столбца, содержащих максимальный элемент этой матрицы.

58. Составить программу, удаляющую из матрицы А[m,n] столбцы, в которых чётных элементов больше, чем нечётных.

59. Ввести матрицу А[m,n]. Удалить из неё все столбцы, в которых сумма чётных элементов будет больше суммы нечётных элементов последней строки.

60. Дана матрица А[m,n]. Создать из неё матрицу B [ m -1, n ], удалив в каждом столбце максимальный нечетный элемент.

 

(Сложность 7)

61. Дана матрица А[m,n] и массив B [ m ]. Удалить из матрицы те столбцы, которые содержат те же самые четные элементы, что и массив B и в таком же количестве.

62. Дана матрица А[m,n] и массив B [ m ]. Вставить после каждого столбца, содержащего четное количество элементов массива B столбец, содержащий элементы этого массива, при каждой вставке циклически сдвигая их на один элемент вниз.

63. Дана матрица А[m,n] и массив B [ n ]. Сформировать матрицу С[к, n ] из тех строк матрицы А, все элементы которых имеются в массиве B, но ни один из них не стоит на том же месте. Строки, добавленные в матрицу С, из матрицы А удалить.

64. Дана матрица А1[ m 1, n 1] и матрица А2[ m 2, n 2], причем m 1 > m 2 и n 1 > n 2. Найти в матрице А1 все подматрицы, элементы которых совпадают с элементами матрицы А2.

65. Дана матрица А[m,n] и массив B [ m * n ]. Отсортировать элементы каждой строки матрицы по возрастанию, после чего выполнить слияние их в массив B так, чтобы его элементы также оказались упорядоченными по возрастанию. Алгоритмов сортировки для массива В не применять.

66. Дана матрица А[n,n]. Выполнить ее «поворот» на К*90°, где К – заданное целое число.

67. Дана матрица А1[ m , n ] и матрица А2[ m , n ], получить матрицу B [ m , n ], элементы которой равны разнице максимального элемента в соответствующей строке матрицы А1 и минимального элемента соответствующего столбца матрицы А2.

68. Дана матрица А1[ m , n ] и матрица А2[ n , k ], получить матрицу B [ m , k ], элементы которой равны сумме произведений элементов соответствующей строки матрицы А1 и соответствующего столбца матрицы А2.

69. Дана матрица А[m,n]. Вставить в каждой строке матрицы сразу после максимального элемента этой строки разность между ее максимальным и минимальным элементами, удалив в этой строке минимальный элемент.

70. Дана матрица А[m,n]. Заменить максимальный элемент каждого столбца суммой минимальных элементов предшествующего и последующего столбцов. Для первого столбца предшествующим считать последний, а для последнего следующим считать первый.

 

(Сложность 8)

71. Дана матрица А[m,n]. Поменять на обратный порядок элементов в строках, находящихся между строк, дающих максимальное скалярное произведение.

72. Дана матрица А[n,n]. Найти диагональ, параллельную главной диагонали этой матрицы, элементы которой имеют максимальное произведение, и сдвинуть элементы этой диагонали на К позиций вниз и вправо.

73. Дана матрица А[n,n]. Поменять местами элементы тех пар диагоналей, параллельных главной и имеющих одинаковую длину, которые имеют четное количество нечетных элементов.

74. Дана матрица А[n,n]. Определить, на какой из диагоналей, параллельных главной, элементы имеют максимальное произведение.

75. Дана матрица А[2* n ,2* n ], состоящая из четырех подматриц размером n * n . Поменять в этой матрице местами две любых указанных подматрицы.

76. Дана матрица А[2* n ,2* n ], состоящая из четырех подматриц размером n * n . Определить, имеются ли в этой матрице совпадающие по значениям элементов подматрицы.

77. Дана матрица А[n,n]. Определить, какая из четырех треугольных подматриц этой матрицы имеет максимальное произведение минимального четного на максимальный нечетный элемент. Элементы главной и побочной диагоналей не учитывать.

78. Дана матрица А[n,n], содержащая результаты игр футбольного чемпионата. Считая, что за победу в матче присуждается три очка, за ничью – одно, за поражение – ноль очков, распечатать команды в порядке занятых ими мест (по сумме полученных очков), начиная с первого. При равенстве количества очков у команд победитель определяется по количеству забитых и пропущенных мячей. При равенстве этого показателя преимущество получает победитель в личной встрече. При ничейном результате в личной встрече рассматриваются результаты встреч с другими командами (сверху вниз).

79. Разработать программу для составления решетки для шифрования. Решеткой называется матрица А[N,N] элементы которой равны 0 или 1. Количество единиц в этой матрице равно N * N /4, а расположены они таким образом, что после трех последовательных поворотов на 90° «покрывают» всю матрицу.

80. Дано целое число N. Получить матрицу А[n,n], состоящую из чисел от 1 до N * N, расположенных по спирали.


Оформление отчета

В отчет включить:

· Тему и цель работы;

· Задание на выполнение (конкретный вариант индивидуального задания);

· Алгоритм программы в виде блок-схемы. Части алгоритма, выполняющие законченные этапы общего алгоритма, целесообразно оформить в виде подалгоритмов;

· Текст программы с комментариями;

· Результаты выполнения программы (для нескольких размеров исходной матрицы и для различных ситуаций наличия или отсутствия решения в зависимости от исходных данных):

Требования к работе

1. Приведенное выше содержание отчета достаточно для выполнения задания всех уровней сложности. Алгоритм программы, реализующий индивидуальное задание, необходимо разработать самостоятельно по образцу и на основе алгоритмов, приведенных в теоретической части. Требования по каждому критерию оценки:

1.1.  Точное выполнение полученного варианта задания. Обратить внимание на возможность ввода исходных данных, для которых выполнение поставленной задачи невозможно по той или иной причине. Обеспечить вывод на консоль сообщения о причине (или причинах, если их несколько) невыполнения задания.

1.2. Включение в отчет всех материалов, указанных в приведенных выше требованиях к оформлению отчета. При подборе исходных данных для тестирования программы необходимо верно определить, сколько различных вариантов понадобится. Необходимо не только продемонстрировать, что программа работает для различных размеров исходной матрицы, но и обеспечить вывод всех сообщений, заложенных в программе.

1.3. Качество алгоритма, время выполнения которого сильно зависит от размера исходных данных, зависит от наличия (или, наоборот, отсутствия) лишних операций, замедляющих его работу. Не помещайте действий, которые можно выполнить однократно, внутри циклов. Если в алгоритме существует возможность не выполнять цикл обработки до конца, используйте выход из цикла. Следите за местом инициализации переменных при использовании вложенных циклов.

Не забывайте, что разработанный алгоритм должен точно выполнять индивидуальное задание. Если возможны случаи, когда требуемый результат не может быть получен (а такие случаи возможны, особенно, если исходные данные имеют случайный характер), в алгоритме обязательно должна быть соответствующая проверка и выдача сообщения.

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

1.5.  Если при выполнении программы при каких-либо исходных данных могут возникнуть ситуации, приводящие к ошибке времени выполнения (например, к выходу индекса за пределы массива), необходимо это отслеживать. Отсутствие соответствующего контроля снижает надежность программы. Можно также добавить контроль корректного ввода размера матрицы. Для случая квадратной матрицы достаточно ввода только одного размера.

1.6. Основными конструкциями, используемыми в данной программе, являются циклы for. Использование других видов циклов (while и do-while) не исключается, но должно иметь четкое обоснование. Принципиально важным в большинстве вариантов задания является порядок записи в программе и правильная вложенность циклов. При необходимости использования операторов управления циклами break и continue делайте это корректно.

 


Дата добавления: 2020-01-07; просмотров: 400; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!