Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмические языки: Лабораторная работа №4 -...doc
Скачиваний:
23
Добавлен:
10.11.2019
Размер:
105.98 Кб
Скачать

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

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

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

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

(Сложность 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. Дана матрица А1[m1,n1] и матрица А2[m2,n2], причем m1 > m2 и n1 > n2. Найти в матрице А1 все подматрицы, элементы которых совпадают с элементами матрицы А2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Сложность 9) - Литературу (при необходимости) найти самостоятельно!

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

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

  3. Разработать программу для моделирования процесса игры «Реверси», если задана последовательность ходов обоих игроков. Поверять корректность ходов, определить момент окончания игры и победителя.

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

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

  6. Разработать программу для моделирования процесса игры «Жизнь» (другое название этой же игры – «Эволюция»).

  7. Расписание авиарейсов между N городами задано с помощью вещественной матрицы А[N,N], элемент которой А[K,L] равен нулю, если прямого рейса между городами K и L не существует, иначе он равен времени вылета рейса из города K в город L. Время в полете для каждого рейса хранится в аналогично организованной матрице B[N,N]. Найти все маршруты для перелета из заданного города C в заданный город D (циклические маршруты не учитывать) и выбрать из них минимальный по времени с учетом ожидания в городах пересадки с рейса на рейс.

  8. Задана матрица А[N,N] родственных отношений для N человек, элемент которой А[K,L] равен нулю, если прямого родства не существует, единице – если K приходится L мужем (женой), двойке – родителем, тройке – сыном, четверке – дочерью. Ввести матрицу А, проверить ее на непротиворечивость и для заданного K найти и напечатать всех его кузин и кузенов (двоюродных сестер и братьев). Указание: имена родственников удобно хранить в массиве типа string.

  9. Дана символьная строка из М символов и матрица А[N,N] (М <= N*N), элементы которой равны 0 или 1. используя эту матрицу как «решетку» для шифрования, зашифровать, а затем расшифровать исходную строку.

  10. Проверить, является ли система линейных уравнений AX = B совместной.

(Сложность 10) – Литературу найти самостоятельно!

  1. Решить систему линейных уравнений AX = B методом Гаусса.

  2. Дана матрица А[m,n]. Выполнить разложение этой матрицы на три: нижнюю треугольную, верхнюю треугольную и перестановочную (NVP-разложение).

  3. Предложить алгоритм и программу для составления магических квадратов размера N на N.

  4. Предложить алгоритм и программу для составления судоку.

  5. Предложить алгоритм и программу для решения судоку.

  6. Разработать программу для игры «Реверси», реализующую выигрышную стратегию для компьютера.

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

  8. Предложить модель кубика Рубика с использованием двумерных или трехмерных массивов (по выбору). Считая исходное положение кубика упорядоченным (кубик собран) ввести последовательность ходов (поворотов его граней) и напечатать полученное состояние кубика.

  9. Задана матрица, представляющая собой дискретное рабочее поле односторонней печатной платы. Положительными числами заданы номера цепей, подлежащих трассировке, отрицательными (например, -1) – области, запрещенные для трассировки. Выполнить трассировку заданных цепей волновым алгоритмом.

  10. Задано две матрицы одинакового размера, представляющие собой дискретное рабочее поле двусторонней печатной платы. Положительными числами заданы номера цепей, подлежащих трассировке, отрицательными (например, -1) – области, запрещенные для трассировки. Выполнить трассировку заданных цепей лучевым алгоритмом.