Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Двумерные массивы (матрицы)




Matrix1. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.

Matrix2. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4.

Matrix3. Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4.

Matrix4. Дана матрица размера 5 x 10. В каждой строке1|столбце2 найти количество элементов, больших3|меньших4 среднего арифметического всех элементов этой строки1|столбца2.

Matrix5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке1|столбце2.

Matrix6. Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение среди сумм элементов всех ее строк3|столбцов4 и номер строки3|столбца4 с этим минимальным1|максимальным2 значением.

Matrix7. Дана матрица размера 5 x 10. Найти минимальный1|максимальный2 среди максимальных1|минимальных2 элементов каждой строки3|столбца4.

Matrix8. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк3|столбцов4 нет, то вывести 0.

Matrix9. Дана матрица размера 5 x 10. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего только положительные элементы. Если таких строк3|столбцов4 нет, то вывести 0.

Matrix10. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2.

Matrix11. Дана целочисленная матрица размера M x N. Найти количество ее строк1|столбцов2, все элементы которых различны.

Matrix12. Дана целочисленная матрица размера M x N. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов.

Matrix13. Дана квадратная матрица порядка M. Найти сумму элементов ее главной1|побочной2 диагонали.

Matrix14. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали A[1,M]1|A[1,1]2).

Matrix15. Дана квадратная матрица порядка M. Вывести минимальные1|максимальные2 из элементов каждой ее диагонали, параллельной главной3|побочной4 (начиная с одноэлементной диагонали A[1,M]3|A[1,1]4).

Matrix16. Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже1|выше2 главной3|побочной4 диагонали.

Matrix17. Дана квадратная матрица порядка M. Заменить нулями элементы, лежащие одновременно выше1|ниже2 главной диагонали (включая эту диагональ) и выше3|ниже4 побочной диагонали (также включая эту диагональ).

Matrix18. Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно [горизонтальной оси симметрии]1|[вертикальноc оси симметрии]2|[главной диагонали]3|[побочной диагонали]4 матрицы.

Matrix19. Дана квадратная матрица порядка M. Повернуть ее на 901|1802|2703 градусов в положительном направлении.

Matrix20. Дана матрица размера 5 x 10. Вывести количество строк1|столбцов2, элементы которых монотонно возрастают3|убывают4.

Matrix21. Дана матрица размера 5 x 10. Найти минимальный1|максимальный2 среди элементов тех строк3|столбцов4, которые упорядочены либо по возрастанию, либо по убыванию. Если такие строки3|столбцы4 отсутствуют, то вывести 0.

Matrix22. Даны два числа k1 и k2 и матрица размера 4 x 10. Поменять местами строки1|столбцы2 матрицы с номерами k1 и k2.

Matrix23. Дана матрица размера 5 x 10. Поменять местами строки1|столбцы2, содержащие минимальный и максимальный элементы матрицы.

Matrix24. Дана матрица размера 5 x 10. Поменять местами столбец с номером 11|102 и первый3|последний4 из столбцов, содержащих только положительные элементы.

Matrix25. Дано число k и матрица размера 4 x 10. Удалить строку1|столбец2 матрицы с номером k.

Matrix26. Дана матрица размера 5 x 10. Удалить строку1|столбец2, содержащий минимальный3|максимальный4 элемент матрицы.

Matrix27. Дана матрица размера 5 x 10. Удалить первый1|последний2|все3 столбцы, содержащие только положительные элементы.

Matrix28. Дано число k и матрица размера 4 x 9. Перед1|после2 строки3|столбца4 матрицы с номером k вставить строку3|столбец4 из нулей.

Matrix29. Дана матрица размера 4 x 9. Продублировать строку1|столбец2 матрицы, содержащий ее минимальный3|максимальный4 элемент.

Matrix30. Дана матрица размера 5 x 9. Перед1|после2 первого3|последнего4 столбца, содержащего только положительные элементы, добавить столбец, состоящий из единиц.

Matrix31. Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

Matrix32. Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше (больше) всех окружающих его элементов. Заменить все локальные минимумы1|максимумы2 данной матрицы на 0.

Matrix33. Дана матрица размера M x N. Поменять местами ее строки1|столбцы2 так, чтобы их минимальные3|максимальные4 элементы образовывали возрастающую5|убывающую6 последовательность.

 

Символы и строки

String1. Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1.

String2. Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.

String3. Дана строка. Вывести коды ее первого и последнего символа.

String4. Дана строка. Подсчитать количество содержащихся в ней цифр1|[прописных букв]2|[строчных букв]3.

String5. Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2.

String6. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.

String7. Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке.

String8. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).

String9. Дана строка, изображающая двоичную1|десятичную2 запись целого числа. Вывести строку, изображающую десятичную1|двоичную2 запись этого же числа.

String10. Дана строка, изображающая целое число. Вывести сумму цифр этого числа.

String11. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка).

String12. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.

String13. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0.

String14. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.

String15. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S.

String16. Даны строки S1, S2 и символ C. Перед1|после2 каждого вхождения символа C в строку S1 вставить строку S2.

String17. Даны две строки: S1 и S2. Удалить из строки S1 первую1|последнюю2|все3 подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.

String18. Даны три строки: S1, S2, S3. Заменить в строке S1 первое1|последнее2|все3 вхождения строки S2 на S3.

String19. Дана строка. Вывести подстроку, расположенную между первой и второй1|последней2 точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку.

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

String21. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые [начинаются и заканчиваются одной и той же буквой]1|[содержат хотя бы одну букву "А"]2.

String22. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы "А".

String23. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого1|длинного2 слова.

String24. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом "." (точка). В конце точку не ставить.

String25. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.

String26. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все последующие1|предыдущие2 вхождения первой1|последней2 буквы этого слова (количество пробелов между словами не изменять).

String27. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.

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

String29. Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке [знаков препинания]1|[гласных букв]2.

String30. Дана строка-предложение на русском языке. Вывести самое короткое1|длинное2 слово в предложении (если таких слов несколько, то вывести первое3|последнее4 из них).

String31. Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами был ровно один пробел.

String32. Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из этой строки имя1|расширение2 файла.

String33. Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов "\"). Если файл содержится в корневом каталоге, то вывести символ "\".

String34. Дана строка-предложение на русском языке. Зашифровать ее, выполняя циклическую замену каждой буквы на следующую за ней в алфавите и сохраняя при этом регистр букв ("А" перейдет в "Б", "а" — в "б", "Б" — в "В", "я" — в "а" и т.д.). Букву "ё" в алфавите не учитывать ("е" должна переходить в "ж"). Знаки препинания и пробелы не изменять.

String35. Дана строка-предложение на русском языке и число k (0 < k < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на k-й позиции после шифруемой буквы (например, для k = 2 "А" перейдет в "В", "а" — в "в", "Б" — в "Г", "я" — в "б" и т.д.). Букву "ё" в алфавите не учитывать, знаки препинания и пробелы не изменять.

String36. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании String35) и кодовое смещение k (0 < k < 10). Расшифровать предложение.

String37. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании String35) и его расшифрованный первый символ C. Определить кодовое смещение k и расшифровать предложение.

String38. Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка "Программа" превратится в "ргамамроП").

String39. Дано предложение, зашифрованное по правилу, описанному в задании String38. Расшифровать это предложение.

String40. Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1.

Обработка числовых данных

В заданиях данной подгруппы требуется реализовать процедуры или функции с числовыми параметрами типа integer и real. Входные параметры этих типов обычно описываются как параметры-значения.

Proc1. Описать функцию Min2(A,B)1|Max2(A,B)2 вещественного типа, находящую минимальное1|максимальное2 из двух вещественных чисел A и B. С помощью этой функции найти минимальные1|максимальные2 из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D.

Proc2. Описать процедуру Minmax(A,B), записывающую в переменную A минимальное из значений A и B, а в переменную B — максимальное из этих значений (A и B — вещественные параметры, являющиеся одновременно входными и выходными). Используя четыре вызова этой процедуры, найти минимальное и максимальное из ·исел A, B, C, D.

Proc3. Используя процедуру Minmax из задания Proc2, описать функцию Min3(A,B,C)1|Max3(A,B,C)2 вещественного типа, находящую минимальное1|максимальное2 из трех вещественных чисел A, B и C. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C), (A,B,D), (A,C,D), если даны числа A, B, C, D.

Proc4. Используя функцию Min21|Max22 из задания Proc1, описать функцию Min4(A,B,C,D)1|Max4(A,B,C,D)2 вещественного типа, находящую минимальное1|максимальное2 из четырех вещественных чисел A, B, C и D. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C,D), (A,B,C,E), (A,C,D,E), если даны числа A, B, C, D, E.

Proc5. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1·2·...·N (N > 0 — параметр целого типа). С помощью этой фунЄции вычислить факториалы 10 данных чисел.

Proc6. Описать функцию FactR(N) вещественного типа, позволяющую вычислять приближенное значение факториала N! = 1·2·...·N для целых N (> 0). С помощью этой функции вычислить факториалы пяти данных чисел.

Proc7. Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1·3·5·...·N, если N — нечетное, N!! = 2·4·6·...·N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел.

Proc8. Описать нерекурсивную функцию Fib(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4,.... С помощью этой функции вычислить 10 чисел Фибоначчи с указанными номерами.

Proc9. Описать процедуру SumDigit(N,S), находящую сумму цифр S целого числа N (N — входной, S — выходной параметр). Используя эту процедуру, найти суммы цифр пяти данных чисел.

Proc10. Описать нерекурсивную функцию NOD2(A,B) целого типа, находящую наибольший общий делитель (НОД) двух натуральных чисел A и B, используя алгоритм Евклида: НОД(A,B) = НОД(B mod A,A), если A <> 0; НОД(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.

Proc11. Используя функцию NOD2 из задания Proc10, описать процедуру Frac(a,b,p,q), преобразующую дробь a/b к несократимому виду p/q (все параметры процедуры — целого типа). Знак результирующей дроби p/q приписывается числителю (т.е. q > 0). С помощью этой процедуры найти несократимые дроби, равные a/b + c/d, a/b + e/f, a/b + g/h (числа a, b, c, d, e, f, g, h даны).

Proc12. Описать функцию Exp1(x,eps) вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции exp(x): exp(x) = 1 + x + x2 / 2! + x3 / 3! +... + xn / n! +.... В сумме учитывать все слагаемые, большие eps. С помощью Exp1 найти приближенное значение экспоненты для данного x при шести данных eps.

Proc13. Описать функцию Sin1(x,eps)1|Cos1(x,eps)2 вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции sin(x)1|cos(x)2: [sin(x) = x – x3 / 3! + x5 / 5! –... + (–1)n x2n+1 / (2n+1)! +...]1|
[cos(x) = 1 – x2 / 2! + x4 / 4! –... + (–1)n x2n / (2n)! +...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Sin11|Cos12 найти приближенное значение синуса1|косинуса2 для данного x при шести данных значениях eps.

Proc14. Описать функцию Ln1(x,n)1|Arctg1(x,n)2 вещественного типа (параметры x, eps — вещественные, |x| < 1, eps > 0), находящую приближенное значение функции ln(1+x)1|arctg(x)2: [ln(1+x) = x – x2 / 2 + x3 / 3 –... + (–1)n xn+1 / (n+1) +...]1|
[arctg(x) = x – x3 / 3 + x5 / 5 –... + (–1)n x2n+1 / (2n+1) +...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Ln11|Arctg12 найти приближенное значение ln(1+x)1|arctg(x)2 для данного x при шести данных значениях eps.

Proc15. Описать функцию PowerA(x,a,eps) вещественного типа (параметры x, a, eps — вещественные, |x| < 1, a > 0, eps > 0), находящую приближенное значение функции (1+x)a: (1+x)a = 1 + a·x + a·(a–1)·x2 / 2! +... + a·(a–1)·...·(a–n+1)·xn / n! +.... В сумме учитывать все слагаемые, большие по модулю eps. С помощью PowerA найти приближенное значение (1+x)a для данных x и a при шести различных значениях eps.

Proc16. Описать функцию Otr(Ax,Ay,Bx,By) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов: |AB| = sqrt((Ax-Bx)2 + (Ay-By)2) (Ax, Ay, Bx, By — вещественные параметры). С помощью этой функции найти длины отрезков AB, AC, AD, если даны координаты точек A, B, C, D.

Proc17. Используя функцию Otr из задания Proc16, описать функцию Perim(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (Ax, Ay, Bx, By, Cx, Cy — вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.

Proc18. Используя функции Otr и Perim из заданий Proc16 и Proc17, описать функцию Area(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую площадь треугольника ABC по формуле Герона:

SABC = sqrt(p·(p–|AB|)·(p–|AC|)·(p–|BC|)), где p — полупериметр. С помощью этой функции найти площади треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.

Proc19. Используя функции Otr и Area из заданий Proc16 и Proc18, описать процедуру Dist(Px,Py,Ax,Ay,Bx,By,D), находящую расстояние D от точки P до прямой AB по формуле D = 2SPAB / |AB|, где SPAB — площадь треугольника PAB. С помощью этой процедуры найти расстояния от точки P до прямых AB, AC, BC, если даны координаты точек P, A, B, C.

Proc20. Используя процедуру Dist из задания Proc19, описать процедуру Heights(Ax,Ay,Bx,By,Cx,Cy,hA,hB,hC), находящую высоты hA, hB, hC треугольника ABC, проведенные соответственно из вершин A, B, C. С помощью этой процедуры найти высоты треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.

 

Массивы

При описании процедур и функций в заданиях данной подгруппы необходимо учитывать особенности, связанные с передачей массивов в качестве параметров. Для одномерных параметров-массивов рекомендуется использовать механизм открытых массивов, введенный в Borland Pascal 7.0. Для двумерных массивов-матриц подобный механизм использовать нельзя, поэтому предварительно требуется определить соответствующий пользовательский тип, который в дальнейшем использовать при описании параметров-матриц. Входные параметры-массивы обычно не описывают как параметры-значения, поскольку это приводит, как правило, к неоправданному расходу памяти. Если массив в ходе выполнения процедуры/функции не изменяется, его нужно описать как параметр-константу, а если изменяется, то как параметр-переменную.

Вспомогательные локальные переменные-массивы в процедурах/функциях при выполнении заданий использовать не следует.

Proc21. Описать функцию Polynom(A,N,X) вещественного типа, находящую значение полинома P в вещественной точке X. Полином P задается параметрами N (степень полинома, 0 < N < 8) и A (коэффициенты полинома, вещественный массив размера N+1): P(X) = A[1]·XN + A[2]·XN–1 +... + A[N]·X + A[N+1]. Используя эту функцию, найти значения заданного полинома в пяти данных точках.

Proc22. Описать функцию Min(A,N)1|Max(A,N)2 вещественного типа, находящую минимальный1|максимальный2 элемент массива A, состоящего из N вещественных чисел. С помощью этой функции найти минимальные1|максимальные2 элементы массивов A, B, C размера NA, NB, NC соответственно.

Proc23. Описать функцию NMin(A,N)1|NMax(A,N)2 целого типа, находящую номер минимального1|максимального2 элемента массива A (массив состоит из N вещественных чисел). С помощью этой функции найти номера минимальных1|максимальных2 элементов массивов A, B, C размера NA, NB, NC соответственно.

Proc24. Описать процедуру NMinmax(A,N,NMin,NMax), находящую номера минимального и максимального элемента массива A из N вещественных чисел. Выходные параметры: NMin (номер минимального элемента) и NMax (номер максимального элемента). С помощью этой процедуры найти номера минимальных и максимальных элементов массивов A, B, C размера NA, NB, NC соответственно.

Proc25. Используя функцию NOD2 из задания Proc10, описать функцию NODN(A,N) целого типа, находящую наибольший общий делитель элементов целочисленного массива A размера N. С помощью этой функции найти наибольшие общие делители элементов массивов A, B, C размера NA, NB, NC соответственно.

Proc26. Описать функцию NOKN(A,N) целого типа, находящую наименьшее общее кратное элементов целочисленного массива A размера N. Учитывая соотношение НОК(X,Y) = X * Y div НОД(X,Y), использовать функцию NOD2 из задания Proc10. С помощью функции NOKN найти наименьшие общие кратные элементов массивов A, B, C размера NA, NB, NC соответственно.

Proc27. Описать процедуру Factors(A,N,F), находящую разложение натурального числа A на простые множители. Количество множителей возвращается в целой переменной N, а сами множители (в порядке неубывания) — в целочисленном массиве F (N и F — выходные параметры; максимальное число элементов массива F считать равным 15). С помощью этой процедуры разложить на простые множители пять данных чисел.

Proc28. Используя функцию Otr из задания Proc16, описать функцию PerimN(X,Y,N) вещественного типа, находящую периметр N-угольника, координаты вершин которого (в порядке их обхода) передаются в вещественных массивах X, Y размера N (> 2). С помощью этой функции найти периметры трех данных многоугольников (с числом вершин NA, NB, NC соответственно), если даны координаты их вершин.

Proc29. Описать процедуру Invert(A,N), меняющую порядок следования элементов массива A из N вещественных чисел на противоположный ("инвертирование массива"). Массив A — входной и выходной параметр, N — входной параметр. С помощью этой процедуры инвертировать массивы A, B, C размера NA, NB, NC соответственно.

Proc30. Описать процедуру MoveLeft(A,N,k)1|MoveRight(A,N,k)2, осуществляющую циклический сдвиг элементов вещественного массива A размера N на k позиций влево1|вправо2 (0 < k < 5, k < N). Массив A — входной и выходной параметр, N и k — входные параметры. С помощью этой процедуры осуществить сдвиг элементов данного массива размера N на k1 позиций, а затем — сдвиг элементов полученного массива на k2 позиций (k1 и k2 даны). После каждого вызова процедуры выводить на экран результирующий массив.

Proc31. Описать процедуру Smooth(A,N), заменяющую каждый элемент вещественного массива A размера N на его среднее арифметическое со своими соседями ("сглаживание массива"). Массив A — входной и выходной параметр, N — входной параметр. С помощью этой процедуры выполнить пятикратное сглаживание данного массива A размера N, выводя на экран результаты каждого сглаживания.

Proc32. Описать процедуру RemoveX(A,N,X), удаляющую элементы, равные числу X, из массива A целых чисел размера N. Массив A и число N являются входными и выходными параметрами. С помощью этой процедуры удалить из массивов A, B, C размера NA, NB, NC числа XA, XB, XC соответственно.

Proc33. Описать процедуру DoubleX(A,N,X), дублирующую элементы, равные числу X, в массиве A целых чисел размера N. Массив A и число N являются входными и выходными параметрами. С помощью этой процедуры продублировать в массивах A, B, C размера NA, NB, NC каждое вхождение чисел XA, XB, XC соответственно.

Proc34. Описать процедуру SortInc(A,N)1|SortDec(A,N)2, выполняющую сортировку по возрастанию1|убыванию2 массива A из N вещественных чисел. Массив A является входным и выходным параметром. С помощью этой процедуры отсортировать массивы A, B, C размера NA, NB, NC соответственно.

Proc35. Описать функцию Norm1(A,M,N)1|Norm2(A,M,N)2 вещественного типа, вычисляющую норму матрицы A размера M x N с вещественными элементами: [Norm1(A,M,N) = max {|A[1,j]| + |A[2,j]| +... + |A[M,j]|}]1| [Norm2(A,M,N) = max {|A[i,1]| + |A[i,2]| +... + |A[i,N]|}]2, где максимум берется по всем [j от 1 до N]1|[i от 1 до M]2. Для данной матрицы A размера M x N найти Norm1(A,k,N)1|Norm2(A,k,N)2, k = 1,...,M.

Proc36. Описать функцию SumLine(A,M,N,k)1|SumCol(A,M,N,k)2 вещественного типа, вычисляющую сумму элементов вещественной матрицы A размера M x N, расположенных в k-й строке1|столбце2 (если [k > M]1|[k > N]2, то функция возвращает 0). Для данной матрицы A размера M x N и трех данных k найти SumLine(A,M,N,k)1|SumCol(A,M,N,k)2.

Proc37. Описать процедуру SwapLine(A,M,N,k1,k2)1|SwapCol(A,M,N,k1,k2)2, осуществляющую перемену местами строк1|столбцов2 вещественной матрицы A размера M x N с номерами k1 и k2 (если k1 или k2 больше M1|N2, то матрица не изменяется). Двумерный массив A — входной и выходной параметр, прочие параметры — входные. Используя эту процедуру, поменять для данной матрицы A размера M x N строки1|столбцы2 с номерами k1 и k2.

Proc38. Описать процедуру Transp(A,M), выполняющую транспонирование квадратной вещественной матрицы A порядка M. Двумерный массив A — входной и выходной параметр, M — входной параметр. Использовать эту процедуру для транспонирования данной матрицы A порядка M.

Proc39. Описать процедуру Gauss(A,M,N,i1,i2,X), преобразующую вещественную матрицу A размера M x N следующим образом: из строки i1 вычитается строка i2, умноженная на вещественное число X. Двумерный массив A — входной и выходной параметр, прочие параметры — входные. С помощью этой процедуры, используя в качестве вспомогательной первую строку, обнулить в остальных строках данной матрицы A размера M x N элементы k-го столбца (число k дано, причем A[1,k] <> 0).

Proc40. Описать процедуру DelIJ(A,M,N,i,j), удаляющую из матрицы A размера M x N строку и столбец, содержащие элемент A[i,j] (если i > M или j > N, то матрица не изменяется). Двумерный вещественный массив A и целые числа M (> 1), N (> 1) являются входными и выходными параметрами, i и j — входные параметры. Дана матрица A размера M x N и числа i, j. Применить к матрице A процедуру DelIJ и вывести полученную матрицу.

[

Строки

Входные строковые параметры, если они не изменяются в теле процедуры/функции, для экономии памяти рекомендуется описывать как параметры-константы.

Proc41. Описать функцию IsIdent(S) целого типа, проверяющую, является ли строка S допустимым идентификатором Паскаля. При утвердительном ответе возвращается 0. Если S является пустой строкой, то возвращается –1, если строка начинается с цифры, то возвращается –2. Если S содержит недопустимые символы, то возвращается номер первого недопустимого символа. Проверить с помощью этой функции пять данных строк.

Proc42. Описать функцию FillStr(S,Len) строкового типа, возвращающую строку длины Len, заполненную повторяющимися копиями строки-шаблона S (последняя копия строки-шаблона может входить в результирующую строку частично). Используя эту функцию, сформировать по данному числу Len и пяти данным строкам-шаблонам пять результирующих строк длины Len.

Proc43. Описать процедуру UpCase1(S)1|LowCase1(S)2, преобразующую все строчные1|прописные2 буквы строки S в прописные1|строчные2 (остальные символы строки S не изменяются). Используя эту процедуру, преобразовать пять данных строк.

Proc44. Описать процедуру TrimL(S)1|TrimR(S)2|Trim(S)3, удаляющую в строке S начальные1|конечные2|[начальные и конечные]3 пробелы. Используя эту процедуру, преобразовать пять данных строк.

Proc45. Описать функцию PosLast(subS,S) целого типа, возвращающую номер позиции, с которой в строке S содержится последнее вхождение подстроки subS. Если в строке S отсутствуют подстроки subS, то функция возвращает 0. Вывести значения этой функции для пяти данных пар subS и S.

Proc46. Описать функцию PosK(subS,S,k) целого типа, возвращающую номер позиции, с которой в строке S содержится k-е вхождение подстроки subS (k > 0). Если количество вхождений subS в строке S меньше k, то функция возвращает 0. Вывести значения этой функции для пяти данных троек: k, subS и S.

Proc47. Описать функцию WordN(S,k) строкового типа, возвращающую k-е слово строки S (под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше k, то функция возвращает пустую строку. Используя эту функцию, выделить из данной строки S слова с номерами k1, k2, k3.

Proc48. Описать процедуру SplitStr(S,W,N), которая формирует по данной строке S набор слов W, входящих в S (W — выходной строковый массив; N — его размер; предполагается, что N не будет превышать 10). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки. Используя эту функцию, вывести количество слов N, содержащихся в данной строке S, и сами эти слова.

Proc49. Описать функцию DecToBin(N)1|DecToHex(N)2 строкового типа, которая возвращает строковое представление целого неотрицательного числа N в двоичной1|16-ричной2 системе счисления. Результирующая строка состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за исключением представления числа 0). Используя эту функцию, получить двоичные1|16-ричные2 представления данных пяти чисел.

Proc50. Описать функцию BinToDec(S)1|HexToDec(S)2 целого типа, которая определяет целое неотрицательное число по его строковому представлению S в двоичной1|16-ричной2 системе счисления. Параметр S имеет тип string, состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за исключением значения '0'). Используя эту функцию, вывести пять чисел, для которых даны их двоичные1|16-ричные2 представления.

 

Файлы

Все входные строковые параметры, задающие имена файлов, для экономии памяти целесообразно описывать как параметры-константы.

Proc51. Описать функцию getInt(Name,k) целого типа, возвращающую k-й элемент файла целых чисел с именем Name (элементы нумеруются от 0). Если файл не существует или не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами.

Proc52. Описать функцию getLine(Name,k) строкового типа, возвращающую k-ю строку текстового файла с именем Name (строки нумеруются от 0). Если файл не существует или не содержит k-й строки, то функция возвращает пустую строку. С помощью этой функции вывести пять строк данного файла с указанными номерами.

Proc53. Описать функцию IntFileSize(Name) целого типа, возвращающую размер файла целых чисел с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.

Proc54. Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.

Proc55. Описать процедуру InvertIntFile(Name), меняющую порядок следования элементов файла целого типа с именем Name на противоположный. Если файл не существует или содержит менее двух элементов, то процедура не выполняет никаких действий. Обработать с помощью этой процедуры три файла с данными именами.

Proc56. Описать процедуру SplitIntFile(Name0,k,Name1,Name2), копирующую первые k (>= 0) элементов существующего файла целых чисел с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.

Proc57. Описать процедуру SplitText(Name0,k,Name1,Name2), копирующую первые k (>= 0) строк существующего текстового файла с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.

Proc58. Описать процедуру ConcatFile(NameA,NameB,NameAB), позволяющую объединить содержимое двух двоичных файлов NameA и NameB одного и того же типа в новом файле NameAB. Использовать процедуры BlockRead и BlockWrite. Применить эту процедуру к парам исходных файлов Name1–Name2, Name1–Name3 и Name2–Name3, создав файлы с именами Name12, Name13, Name23.

Proc59. Описать процедуру StringFileToText(Name)1|TextToStringFile(Name)2, преобразующую [двоичный строковый]1|текстовый2 файл с именем Name в текстовый1|[двоичный строковый]2 файл с тем же именем. Используя эту процедуру, преобразовать два данных строковых1|текстовых2 файла с именами Name1 и Name2 в текстовые1|строковые2.

Proc60. Описать процедуру CodeText(Name,k), шифрующую текстовый файл с именем Name, выполняя циклическую замену каждой русской буквы на букву, расположенную в алфавите на k-й позиции после исходной (0 < k < 11). Например, при k = 3 "А" перейдет в "Г", "а" — в "г", "Я" — в "В". Букву "ё" в алфавите не учитывать, прочие символы файла не изменять. Используя эту процедуру и зная k, зашифровать1|расшифровать2 данный файл.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...