|
|||
Функция StrType(s). Функция Compul(s1,s2). Функция Translate(s,s1,s2). Функция Word(s). Пример решения задачи. Индивидуальное задание. Функция substr(s,n,l). Описание метода решения25. Функция StrType(s) Назначение: определение типа строки s (возможные типы — строка букв, десятичное число, 16-ричное число, двоичное число и т.д.). 26. Функция Compul(s1,s2) Назначение: сравнение строк s1 и та s2 с игнорированием различий в регистрах. 27.Функция Translate(s,s1,s2) Назначение: перевод в строке s символов, которые входят в алфавит s1, в символы, которые входят в алфавит s2. 28. Функция Word(s) Назначение: выделение первого слова из строки s. Примечание: под «словом» везде понимается последовательность символов, которая не содержит пробелов.
: Пример решения задачи Индивидуальное задание Функция substr(s,n,l) Назначение: выделение из строки s подстроки, начиная с позиции n, длиной l. Описание метода решения Символьная строка в языке C представляется в памяти как массив символов, в конце которого находится байт с кодом 0 — признак конца строки. Строку, как и любой другой массив можно обрабатывать либо традиционным методом — как массив, с использованием операции индексации, либо через указатели, с использованием операций адресной арифметики. При работе со строкой как с массивом нужно иметь в виду, что длина строки заранее неизвестна, так что циклы должны быть организованы не со счетчиком, а до появления признака конца строки. Функция должна реализовывать поставленную задачу — и ничего более. Это означает, что функцию можно будет, например, перенести без изменений в любую другую программу, если спецификации функции удовлетворяют условиям задачи. Это также означает, что при ошибочном задании параметров или при каких-то особых случаях в их значениях функция не должна аварийно завершать программу или выводить какие-то сообщения на экран, но должна возвращать какое-то прогнозируемое значение, по которому та функция, которая вызвала нашу, может сделать вывод об ошибке или об особом случае. Определим состав параметров функции: int substr (src, dest, num, len); где src — строка, с которой выбираются символы; dest — строка, в которую записываются символы; num — номер первого символа в строке src, с которого начинается подстрока (нумерация символов ведется с 0); len — длина выходной строки. Возможные возвращаемые значения функции установим: 1 (задание параметров правильное) и 0 (задание не правильное). Эти значения при обращениях к функции можно будет интерпретировать как «истина» или «ложь». Обозначим через Lsrc длину строки src. Тогда возможны такие варианты при задании параметров: num+len <= Lsrc — полностью правильное задание; num+len > Lsrc; num < Lsrc — правильное задание, но длина выходной строки будет меньше, чем len; num >= Lsrc — неправильное задание, выходная строка будет пустой; num < 0 или len <= 0 — неправильное задание, выходная строка будет пустой. Заметим, что интерпретация конфигурации параметров как правильная/неправильная и выбор реакции на неправильное задание — дело исполнителя. Но исполнитель должен строго выполнять принятые правила. Возможен также случай, когда выходная строка выйдет большей длины, чем для нее отведено места в памяти. Однако, поскольку нашей функции неизвестен размер памяти, отведенный для строки, функция не может распознать и обработать этот случай — так же ведут себя и библиотечные функции языка C.
|
|||
|