Дополнительные задания на обработку строк
String58. Дана строка, содержащая полное имя файла, то есть имя диска,
список каталогов (путь), собственно имя и расширение. Выделить из этой
строки имя файла (без расширения).
String59. Дана строка, содержащая полное имя файла, то есть имя диска,
список каталогов (путь), собственно имя и расширение. Выделить из этой
78
М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6
строки расширение файла (без предшествующей точки).
String60. Дана строка, содержащая полное имя файла. Выделить из этой стро-
ки название первого каталога (без символов «\»). Если файл содержится
в корневом каталоге, то вывести символ «\».
String61. Дана строка, содержащая полное имя файла. Выделить из этой стро-
ки название последнего каталога (без символов «\»). Если файл содер-
жится в корневом каталоге, то вывести символ «\».
String62. Дана строка-предложение на русском языке. Зашифровать ее, выпол-
нив циклическую замену каждой буквы на следующую за ней в алфавите
и сохранив при этом регистр букв («А» перейдет в «Б», «а» — в «б», «Б»
— в «В», «я» — в «а» и т. д.). Букву «ё» в алфавите не учитывать («е»
должна переходить в «ж»). Знаки препинания и пробелы не изменять.
String63◦. Дана строка-предложение на русском языке и число K (0 < K < 10).
Зашифровать строку, выполнив циклическую замену каждой буквы на
букву того же регистра, расположенную в алфавите на K -й позиции после
шифруемой буквы (например, для K = 2 «А» перейдет в «В», «а» — в «в»,
«Б» — в «Г», «я» — в «б» и т. д.). Букву «ё» в алфавите не учитывать, знаки
препинания и пробелы не изменять.
String64. Дано зашифрованное предложение на русском языке (способ шиф-
рования описан в задании String63) и кодовое смещение K (0 < K < 10).
Расшифровать предложение.
String65. Дано зашифрованное предложение на русском языке (способ шифро-
вания описан в задании String63) и его расшифрованный первый символ C.
Найти кодовое смещение K и расшифровать предложение.
String66. Дана строка-предложение. Зашифровать ее, поместив вначале все
символы, расположенные на четных позициях строки, а затем, в обратном
порядке, все символы, расположенные на нечетных позициях (например,
строка «Программа» превратится в «ргамамроП»).
String67. Дано предложение, зашифрованное по правилу, описанному в зада-
нии String66. Расшифровать это предложение.
String68. Дана строка, содержащая цифры и строчные латинские буквы. Если
буквы в строке упорядочены по алфавиту, то вывести 0; в противном
случае вывести номер первого символа строки, нарушающего алфавитный
порядок.
String69. Дана строка, содержащая латинские буквы и круглые скобки. Ес-
ли скобки расставлены правильно (то есть каждой открывающей соот-
Двоичные файлы
ветствует одна закрывающая), то вывести число 0. В противном случае
вывести или номер позиции, в которой расположена первая ошибочная за-
крывающая скобка, или, если закрывающих скобок не хватает, число −1.
String70◦. Дана строка, содержащая латинские буквы и скобки трех ви-
дов: «()», «[]», «{}». Если скобки расставлены правильно (то есть каждой
открывающей соответствует закрывающая скобка того же вида), то выве-
сти число 0. В противном случае вывести или номер позиции, в которой
расположена первая ошибочная скобка, или, если закрывающих скобок
не хватает, число −1.
Двоичные файлы
Условие вида «дан файл (целых чисел, вещественных чисел и т. д.)» озна-
чает, что в наборе исходных данных указано имя данного файла (текстовая
строка), а сам исходный файл существует и находится в текущем каталоге.
Если существование исходных файлов требуется проверять в ходе выполне-
ния задания, то это особо оговаривается в формулировке задания. Элементы
исходных файлов следует считывать с помощью стандартных процедур ис-
пользуемого языка программирования.
Если в задании требуется создать новый файл, то имя создаваемого файла
также входит в набор исходных данных и обычно является последним элемен-
том этого набора. Записывать элементы в создаваемые (или модифицируемые)
файлы следует с помощью стандартных процедур используемого языка про-
граммирования.
Под размером типизированного файла всегда подразумевается количество
содержащихся в нем элементов указанного типа (а не количество байтов,
как это принято в операционной системе). В заданиях предполагается, что
файловые элементы нумеруются от 1, поэтому в языке Pascal для перехода к
K -му элементу файла F необходимо использовать процедуру Seek(F, K − 1).
Если о минимальном размере исходного файла в задании ничего не ска-
зано, то предполагается, что он равен 2 (то есть файл содержит по крайней
мере два элемента). Максимальный размер исходных файлов не устанавлива-
ется, поэтому при решении заданий не следует использовать вспомогательные
массивы, содержащие все элементы исходных файлов, однако допускается ис-
пользование вспомогательных файлов.
80
М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6