М.Э. Абрамян - Programming Taskbook (1157415), страница 22
Текст из файла (страница 22)
Двумерный массив A является входным и выходным параметром. Используя процедуру SortCols, отсортировать столбцыданной матрицы A размера M × N.СтрокиParam30◦ . Описать функцию IsIdent(S) целого типа, проверяющую, являетсяли строка S допустимым идентификатором, то есть непустой строкой,которая содержит только латинские буквы, цифры и символ подчеркивания «» и не начинается с цифры. Если S является допустимым идентификатором, то функция возвращает 0. Если S является пустой строкой, товозвращается −1, если S начинается с цифры, то возвращается −2.
ЕслиS содержит недопустимые символы, то возвращается номер первого недопустимого символа. Проверить с помощью функции IsIdent пять данныхстрок.Param31. Описать функцию FillStr(S, N) строкового типа, возвращающую строку длины N, заполненную повторяющимися копиями строкишаблона S (последняя копия строки-шаблона может входить в результирующую строку частично).
Используя эту функцию, сформировать поданному числу N и пяти данным строкам-шаблонам пять результирующихстрок длины N.Param32. Описать процедуру UpCaseRus(S), преобразующую все строчныерусские буквы строки S в прописные (остальные символы строки S неизменяются). Строка S является входным и выходным параметром.
Используя процедуру UpCaseRus, преобразовать пять данных строк.Param33. Описать процедуру LowCaseRus(S), преобразующую все прописные русские буквы строки S в строчные (остальные символы строки Sне изменяются). Строка S является входным и выходным параметром.Используя процедуру LowCaseRus, преобразовать пять данных строк.104М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6Param34. Описать процедуру TrimLeftC(S, C), удаляющую в строке S начальные символы, совпадающие с символом C. Строка S является входным ивыходным параметром.
Дан символ C и пять строк. Используя процедуруTrimLeftC, преобразовать данные строки.Param35. Описать процедуру TrimRightC(S, C), удаляющую в строке S конечные символы, совпадающие с символом C. Строка S является входным ивыходным параметром. Дан символ C и пять строк. Используя процедуруTrimRightC, преобразовать данные строки.Param36. Описать функцию InvertStr(S, K, N) строкового типа, возвращающую инвертированную подстроку строки S, содержащую в обратномпорядке N символов строки S, начиная с ee K-го символа.
Если K превосходит длину строки S, то возвращается пустая строка; если длина строкименьше K + N, то инвертируются все символы строки, начиная с ee K-госимвола. Вывести значения функции InvertStr для данной строки S и каждой из трех пар положительных целых чисел: (K 1 , N 1 ), (K 2 , N 2 ), (K 3 , N 3 ).Param37. Описать функцию PosSub(S 0 , S, K, N) целого типа, возвращающуюномер позиции, начиная с которой в строке S содержится первое вхождение строки S 0 , причем анализируются только N символов строки S,начиная с ее K-го символа (таким образом, PosSub обеспечивает поискв подстроке).
Если K превосходит длину строки S, то возвращается 0,если длина строки меньше K + N, то анализируются все символы строки,начиная с ее K-го символа. Если в требуемой подстроке строки S вхождения S 0 отсутствуют, то функция возвращает 0. Вывести значения функцииPosSub для данных строк S 0 , S и каждой из трех пар положительных целых чисел: (K 1 , N 1 ), (K 2 , N 2 ), (K 3 , N 3 ).Param38. Описать функцию PosLast(S 0 , S) целого типа, возвращающую номерпозиции, начиная с которой в строке S содержится последнее вхождениеподстроки S 0 .
Если в строке S отсутствуют подстроки S 0 , то функциявозвращает 0. Вывести значения этой функции для пяти данных пар строкS 0 и S.Param39. Описать функцию PosK(S 0 , S, K) целого типа, возвращающую номерпозиции, начиная с которой в строке S содержится K-е вхождение подстроки S 0 (K > 0). Если количество вхождений S 0 в строке S меньше K, тофункция возвращает 0. Считать, что перекрывающихся вхождений подстрок S 0 строка S не содержит. Вывести значения этой функции для пятиданных троек: S 0 , S и K.Составные типы данных в процедурах и функциях105Param40◦ .
Описать функцию WordK(S, K) строкового типа, возвращающуюK-е слово строки S (словом считается набор символов, не содержащийпробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше K, то функция возвращает пустуюстроку. Используя эту функцию, выделить из данной строки S слова сданными номерами K 1 , K 2 , K 3 .Param41. Описать процедуру SplitStr(S, W, N), которая формирует по даннойстроке S массив W слов, входящих в S (массив W и его размер N являются выходными параметрами). Словом считается набор символов, несодержащий пробелов и ограниченный пробелами или началом/концомстроки; предполагается, что строка S содержит не более 10 слов.
Используя функцию SplitStr, найти количество слов N, содержащихся в даннойстроке S, и сами эти слова.Param42. Описать функцию CompressStr(S) строкового типа, выполняющуюсжатие строки S по следующему правилу: каждая подстрока строки S,состоящая из более чем четырех одинаковых символов C, заменяется текстом вида «С{K}», где K — количество символов C (предполагается, чтострока S не содержит фигурных скобок «{» и «}»).
Например, для строкиS = «bbbccccce» функция вернет строку «bbbc{5}e». С помощью функцииCompressStr сжать пять данных строк.Param43. Описать функцию DecompressStr(S) строкового типа, восстанавливающую строку, сжатую функцией CompressStr (см. задание Param42).Параметр S содержит сжатую строку; восстановленная строка являетсявозвращаемым значением функции.
С помощью функции DecompressStrвосстановить пять данных сжатых строк.Param44. Описать функцию DecToBin(N) строкового типа, возвращающуюстроковое представление целого неотрицательного числа N в двоичнойсистеме счисления. Результирующая строка состоит из символов «0»–«1»и не содержит ведущих нулей (за исключением представления числа 0).Используя эту функцию, получить двоичные представления пяти данныхчисел.Param45.
Описать функцию DecToHex(N) строкового типа, возвращающуюстроковое представление целого неотрицательного числа N в 16-ричнойсистеме счисления. Результирующая строка состоит из символов «0»–«9»,«A»–«F» и не содержит ведущих нулей (за исключением представлениячисла 0). Используя эту функцию, получить 16-ричные представления106М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6пяти данных чисел.Param46. Описать функцию BinToDec(S) целого типа, определяющую целоенеотрицательное число по его строковому представлению S в двоичнойсистеме счисления.
Параметр S имеет строковый тип, состоит из символов«0»–«1» и не содержит ведущих нулей (за исключением значения «0»).Используя эту функцию, вывести пять чисел, для которых даны их двоичные представления.Param47. Описать функцию HexToDec(S) целого типа, определяющую целоенеотрицательное число по его строковому представлению S в 16-ричнойсистеме счисления. Параметр S имеет строковый тип, состоит из символов «0»–«9», «A»–«F» и не содержит ведущих нулей (за исключениемзначения «0»). Используя эту функцию, вывести пять чисел, для которыхданы их 16-ричные представления.ФайлыParam48.
Описать функцию IntFileSize(S) целого типа, возвращающую количество элементов в файле целых чисел с именем S. Если файл не существует, то функция возвращает −1. С помощью этой функции найтиколичество элементов в трех файлах с данными именами.Param49◦ . Описать функцию LineCount(S) целого типа, возвращающую количество строк в текстовом файле с именем S. Если файл не существует,то функция возвращает −1. С помощью этой функции найти количествострок в трех файлах с данными именами.Param50. Описать процедуру InvertIntFile(S), меняющую порядок следованияэлементов файла целого типа с именем S на противоположный.
Еслифайл не существует или содержит менее двух элементов, то процедуране выполняет никаких действий. Обработать с помощью этой процедурытри файла с данными именами.Param51. Описать процедуру AddLineNumbers(S, N, K, L), добавляющую вначало каждой строки существующего текстового файла с именем S еепорядковый номер: первая строка получает номер N, вторая — N + 1 и т.д. Номер отображается в K позициях, выравнивается по правому краюи отделяется от последующего текста L пробелами (K > 0, L > 0).
Еслистрока файла является пустой, то она также нумеруется, но пробелы после номера не добавляются. Применить эту процедуру к данному файлу,используя указанные значения N, K и L.Составные типы данных в процедурах и функциях107Param52. Описать процедуру RemoveLineNumbers(S), удаляющую из началакаждой строки существующего текстового файла с именем S ее порядковый номер, а также пробелы, отделяющие номер от последующего текста(предполагается, что номера могли быть ранее добавлены к строкам файла с помощью процедуры AddLineNumbers — см. задание Param51). Еслистроки не содержат номеров, то процедура не выполняет никаких действий. Применить эту процедуру к файлу с данным именем.Param53◦ . Описать процедуру SplitIntFile(S 0 , K, S 1 , S 2 ), копирующую первые K (≥ 0) элементов существующего файла целых чисел с именем S 0в новый файл целых чисел с именем S 1 , a остальные элементы — в новый файл целых чисел с именем S 2 .