
metod1k
.pdf
3.Отсортировать по не возрастанию элементы c не четными индексами и поместить в конец выходного массива, а остальные элементы
висходном порядке разместить перед ними. [Указание: сформировать вспомогательный массив из x(1), x(3), x(5), . . . и применить к нему сортировку.]
Вариант 18
1.y = число целочисленных элементов x.
2.y = x(n1) + x(n1 + 1) + . . . + x(n2), где n1, n2 — индексы 1-го положительного и, соответственно, 2-го отрицательного элементов x (это если n1 и n2 существуют и n1 < n2 + 1, в противном случае y = 0). [Указание: процедуру отыскания n1, n2 вычленить в подпрограмму.]
3.Отсортировать по не убыванию все элементы x, модуль которых не превышает 0, 75, в этом порядке разместить их в конце выходного массива, а все остальные в прежнем порядке разместить в начале. [Указание: сформировать вспомогательный массив из всех элементов x, модуль которых не превышает 0, 75, и применить к нему сортировку.]
Вариант 19
1.y = max{−x(1), −x(2), . . . , −x(end)}.
2.y = x(n1) x(n1 + 1) . . . x(n2 − 1), где n1, n2 — индексы 1-го отрицательного и, соответственно, 1-го положительных элементов x (это если n1 и n2 существуют и n2 > n1 + 1, в противном случае y = 1). [Указание: процедуру отыскания n1, n2 вычленить в подпрограмму.]
3.Отсортировать по возрастанию ненулевые элементы x и в этом порядке разместить их в конце выходного массива, а все нули разместить
вначале. [Указание: сформировать вспомогательный массив из всех не нулевых элементов x, и применить к нему сортировку.]
Вариант 20
1.y = индекс последнего максимального по модулю отрицательного элемента x.
2.y = среднее арифметическое квадратов элементов x, расположенных после последнего нуля (если нулей в x нет, то y = 0). [Указание:
19

процедуру отыскания номера (индекса) 1-го нуля вычленить в подпрограмму.]
3. Отсортировать по не убыванию своих квадратов элементы x, стоящие в нечетных позициях, и разместить их в этом порядке в начале выходного массива, а остальные элементы в прежнем порядке разместить в конце. [Указание: сформировать вспомогательный массив из всех элементов x с нечетными индексами, и применить к нему сортировку.]
ЗАДАНИЕ 4 ОБРАБОТКА ДВУМЕРНЫХ ЧИСЛОВЫХ МАССИВОВ
Выполнение каждого пункта задания во всех вариантах предполагает написание некоторой m-функции с соответствующими входными и выходными параметрами. Фигурирующий в каждом пункте заданий двумерный массив (матрица) x — это объект класса DOUBLE с вещественными элементами. В 1-ом пункте каждого варианта необходимо привести 2 способа организации цикла с параметром: 1-ый способ — это когда параметр цикла принимает значения одного из индексов матрицы, а 2-ой способ — это когда параметр цикла принимает значения столбцов матрицы. Каждый пункт задания требуется выполнить с использованием одной или нескольких вспомогательных m-функций.
При выполнении данного задания нельзя использовать встроенные векторизованные операции и функции, в частности SUM, PROD, MAX, MIN,
FIND, а также логические операции, однако можно использовать операцию транспонирования и векторные индексы (для выделения отдельных строк или столбцов можно использовать заменяющую векторные индексы операцию : ).
Вариант 1
1.Подсчитать число строк, не содержащих ни одного нуля.
2.Найти максимальное из чисел, встречающихся в своей строке более одного раза (если таких элементов в матрице нет, то возвращаемый результат должен иметь пустое значение).
20

Вариант 2
1.Подсчитать число столбцов, состоящих из одних нулей.
2.Переставить строки матрицы, в порядке не убывания сумм их положительных элементов.
Вариант 3
1.Подсчитать число столбцов, содержащих хотя бы один нулевой элемент.
2.Найти номер строки, в которой находится самая длинная серия одинаковых элементов.
Вариант 4
1.Найти произведение элементов в тех строках, которые не содержат отрицательных элементов.
2.Найти максимум среди произведений элементов диагоналей квадратной матрицы, параллельных главной диагонали матрицы за исключением самой главной диагонали.
Вариант 5
1.Найти сумму элементов в тех столбцах, которые не содержат отрицательных элементов.
2.Найти минимум среди сумм модулей элементов диагоналей квадратной матрицы, параллельных главной диагонали, включая саму главную диагональ.
Вариант 6
1.Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
2.Сформировать двумерный массив индексов всех седловых элемен-
тов матрицы (элемент матрицы x(i,j) является седловым, если x(i −
1, j) < x(i, j) и x(i+1, j) < x(i, j) и x(i, j−1) > x(i, j) и x(i, j+1) > x(i, j)
или, наоборот, x(i−1, j) > x(i, j) и x(i+1, j) > x(i, j) и x(i, j−1) < x(i, j)
и x(i, j + 1) < x(i, j); седловой элемент не может располагаться ни в крайней строке, ни в крайнем столбце матрицы).
21

Вариант 7
1.Подсчитать число строк матрицы, содержащих ровно k (входной параметр) нулей.
2.Найти номера строк, имеющих максимальное значение суммы элементов, среди строк, содержащих отрицательные элементы.
Вариант 8
1.Найти сумму элементов всех тех столбцов матрицы, которые содержат хотя бы один отрицательный элемент.
2.Переставить столбцы матрицы в порядке не возрастания сумм модулей отрицательных элементов.
Вариант 9
1.Найти сумму модулей элементов, расположенных ниже главной диагонали.
2.Сгладить матрицу. Операция сглаживания состоит в замене каждого элемента матрицы средним арифметическим от значений соседних элементов (где-то в середине матрицы ее элементы соседствуют с 8 элементами, угловые элементы соседствуют с 3 элементами, а все остальные, расположенные на краях матрицы — с 5 элементами).
Вариант 10
1.Найти сумму модулей элементов, расположенных выше главной диагонали.
2.Подсчитать число локальных минимумов матрицы. Элемент матрицы называется локальным минимумом, если он строго меньше всех соседних элементов (где-то в середине матрицы ее элементы соседствуют с 8 элементами, угловые элементы соседствуют с 3 элементами, а все остальные, расположенные на краях матрицы — с 5 элементами).
Вариант 11
1.Подсчитать число строк, среднее арифметическое элементов которых меньше t (входной параметр).
2.С помощью допустимых преобразований (умножение строки на произвольное не равное число, прибавление к данной строке другой строки)
22

привести квадратную матрицу к треугольному виду, т. е. первая строка матрицы должна остаться без изменений, во второй — по крайней мере, на месте 1-го элемента должен получиться 0, в третьей — нули должны получиться, по крайней мере, на месте первых двух элементов, и т. д. В последней строке должны получиться нулевыми все элементы, за исключением, быть может, последнего элемента.
Вариант 12
1.Сформировать вектор индексов строк, содержащих хотя бы один положительный элемент.
2.Удалить из матрицы строки и столбцы, состоящие из одних нулей. Вариант 13
1.Найти значение максимальной суммы элементов строки.
2.Подсчитать число строк в которых число седловых элементов мат-
рицы максимально. Элемент матрицы x(i, j) является седловым, если x(i − 1, j) < x(i, j) и x(i + 1, j) < x(i, j) и x(i, j − 1) > x(i, j) и x(i, j + 1) > x(i, j) или, наоборот, x(i − 1, j) > x(i, j) и x(i + 1, j) > x(i, j) и x(i, j −1) < x(i, j) и x(i, j + 1) < x(i, j). Седловой элемент не может располагаться ни в крайней строке, ни в крайнем столбце матрицы. Если в матрице нет ни одного седлового элемента, то возвращаемый результат должен быть равен 0.
Вариант 14
1.Найти сумму максимальных элементов строк (максимальный элемент каждой троки входит в сумму столько раз, сколько раз он встречается в этой строке).
2.Осуществить циклический сдвиг элементов квадратной матрицы на k (входной параметр) позиций вдоль главной и всех параллельных ей побочных диагоналей.
Вариант 15
1.Определить номер первого (слева направо) из столбцов, содержащих хотя бы один нулевой элемент.
2.Переставить строки матрицы в порядке не убывания суммы моду-
23

лей ее отрицательных элементов.
Вариант 16
1.Найти номер последнего из столбцов (сверху вниз), не содержащих ни одного отрицательного элемента.
2.Переставить строки матрицы по не возрастанию в них количества одинаковых элементов.
Вариант 17
1.Найти номера всех строк, содержащих не более одного положительного элемента.
2.Любым образом переставить элементы квадратной вещественной матрицы так, чтобы ее максимальный элемент каждой строки переместился на главную диагональ.
Вариант 18
1.Найти номера всех столбцов, не содержащих более одного отрицательного элемента.
2.Определить номер столбца, в котором находится самая длинная серия идущих подряд одинаковых элементов.
Вариант 19
1.Найти сумму элементов всех тех строк, в которых содержится не более 2-х отрицательных элементов.
2.Найти минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Вариант 20
1.Определить количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент.
2.Подсчитать число столбцов матрицы, в которых число седловых элементов минимально. Элемент матрицы x(i, j) является седловым, ес-
ли x(i − 1, j) < x(i, j) и x(i + 1, j) < x(i, j) и x(i, j − 1) > x(i, j) и x(i, j + 1) > x(i, j) или, наоборот, x(i −1, j) > x(i, j) и x(i + 1, j) > x(i, j)
и x(i, j − 1) < x(i, j) и x(i, j + 1) < x(i, j). Седловой элемент не может
24
располагаться ни в крайней строке, ни в крайнем столбце матрицы.
ЗАДАНИЕ 5 ВЕКТОРНЫЕ И МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ
В этом задании требуется повторно выполнить некоторые пункты из предыдущих заданий, применяя теперь встроенные векторно-матричные операции и функции, такие как, SUM, PROD, REPMAT, CUMPROD, FACTORIAL,
FIND, SORT, MIN, MAX, UNIQUE, SETDIFF, INTERSECT, UNION с целью сократить число явно программируемых циклов. Во многих случаях вообще удастся обойтись без программирования циклов и уж во всяком случае получить более компактную запись алгоритмов. Каждый из 6 пунктов задания (см. ниже) должен быть оформлен в виде отдельной m-функции с соответствующими входными и выходными параметрами.
Пункты задания
1.Запрограммировать в виде m-функции вычисление выражения из ЗАДАНИЯ 1 при произвольных значениях величин x, n (входные параметры), где x — это вектор произвольной длины, n — скаляр. Результат вычисления должен быть массивом, соразмерным с x. Рассмотреть 2 варианта: с одним циклом и вообще без единого цикла.
2.Написать m-функцию, строящую график этого выражения на интервале [a, b], по k равноотстоящим точкам, для чего воспользоваться встроенной функцией LINE.
3.Написать m-функцию, возвращающую вектор значений k-го члена степенного ряда из ЗАДАНИЯ 2, соответствующий вектору значений аргумента x.
4.Запрограммировать (в цикле) вычисление частичных сумм sn(x) в
случае векторного аргумента x и одновременное построение их графиков
спомощью функции LINE при n = 2, 4, 8, 16. [Указание: если графики слишком плотно проходят друг к другу, то можно увеличить диапазон
25
значений аргумента, чтобы убедиться в том, что расхождения графиков
все же имеют место.]
5.Выполнить заново ЗАДАНИЕ 3 (все три пункта. Обойтись без цик-
лов).
6.Выполнить заново ЗАДАНИЕ 4 (в 1-ом пункте обойтись без циклов,
аво втором, возможно, совсем обойтись без циклов не удастся).
ЗАДАНИЕ 6 ОБРАБОТКА ТЕКСТОВОЙ ИНФОРМАЦИИ
В каждом варианте требуется составить два варианта алгоритма. Первый, наиболее простой, вариант должен содержать два повторных прохода исходного текста. Второй вариант должен быть однопроходным , т.е. результат должен быть получен после однократного просмотра текста. Можно (и нужно) использовать встроенные функции, специально предназначенные для обработки строк, такие как: STRFIND, FINDSTR,
STRTOK, BLANKS, DEBLANK, STRCMP, STRMATCH, STRREP, LOWER, UPPER. В этом задании, также как и во всех предыдущих, требуется осуществить декомпозицию исходной задачи на ряд более простых подзадач, т. е. использовать подпрограммы, при этом все m-функции должны снабжаться описаниями вида: %Исх.: . . .
%Рез.: . . .
Предполагается, что исходные данные (текст) передаются в основную m-функцию через входной параметр (вектор—строка класса CHAR), а результат ее выполнения возвращается через соответствующий выходной параметр (матрица класса CHAR). [Указание: для формирования такой матрицы использовать функцию STRVCAT.] Ниже в формулировках вариантов задания под словом СТРОКА понимается вектор класса CHAR. Предполагается, что предложения в тексте заканчиваются знаками: ' ! ',
' ? ' или ' . ', а СЛОВА заканчиваются или пробелом, или каким-либо знаком пунктуации (' ! ', ' ? ', ' . ', ' ; ', ' , ').
26
Варианты задания
1.Найти все предложения, имеющие максимальную среднюю длину
слов.
2.В предложениях, имеющих максимальное число слов, порядок слов заменить на обратный.
3.Подсчитать число предложений, в которых заданное слово встречается минимальное число раз.
4.Найти все предложения, содержащие минимальное число слов заданной длины.
5.В предложениях, имеющих минимальное число слов, поменять местами каждые два соседних слова.
6.Подсчитать число предложений, в которых слова, состоящие из не более четырех букв, встречаются максимальное число раз.
7.В предложениях, являющихся цитатами, подсчитать число слов максимальной длины.
8.В предложениях, содержащих заданное число слов, подсчитать число слов минимальной длины.
9.Найти все предложения, содержащие максимальное число слов, начинающихся и оканчивающихся на гласные буквы.
10.Найти все предложения, содержащие минимальное количество двузначных чисел.
11.В предложениях, начинающихся с тире, подсчитать число слов, содержащих минимальное вхождение гласных.
12.В предложениях, содержащих минимальное число слов, заменить каждую первую букву слова, начинающегося с гласной буквы, на прописную.
13.В предложениях, содержащих минимальное число цифр, заменить каждую цифру эквивалентным словом.
14.Найти все предложения, содержащие самое длинное слово.
15.Найти все вопросительные и восклицательные предложения, со-
27
держащие максимальное число запятых.
16.В предложениях, содержащих минимальное число знаков пунктуации, удалить все слова заданной длины.
17.Найти все предложения, содержащие максимальное число знаков пунктуации.
18.В предложениях, начинающихся с однобуквенных слов, во всех словах максимальной длины буквы переставить в обратном порядке.
19.Найти все предложения, содержащие максимальное число слов минимальной длины.
20.В предложениях, содержащих самое длинное слово, в этом слове поменять местами две первые буквы и две последние буквы.
ЗАДАНИЕ 7 ПРОГРАММИРОВАНИЕ МАТЕМАТИЧЕСКИХ ВЫЧИСЛЕНИЙ
Пусть имеется некоторый набор, по крайней мере, дважды непрерывно дифференцируемых на [0, 1] функций и обладающих тем свойством, что внутри этого отрезка их графики пересекают ось абсцисс ровно 1 раз (каждая функция в наборе имеет на [0, 1] единственный нечетный нуль). Для примера в таблице 1 приведено 10 таких функций. Причем, некоторые из таких функций могут дополнительно зависеть еще от нескольких вещественных параметров, так, например, среди приведенных функций f3(x) имеет только 1 параметр c1, f4(x) — 3 параметра c1, c2, c3, а все остальные функции параметров не имеют. Таким образом, в общем случае, количество параметров у разных функций из заданного набора может быть различным, в том числе параметры могут и вовсе отсутствовать. Требуется написать программу (m-функцию), обрабатываю-
щую произвольную последовательность таких функций, и возвращаю-
M
R
щую приближенное значение определенного интеграла вида F (x)dx,
m
вычисленное с произвольно заданной абсолютной погрешностью ε > 0. Здесь подынтегральная функция F (x) выражается через функции f1(x)
и f2(x) из заданного набора и их производные, а m и M — минимальное
28