Хелпикс

Главная

Контакты

Случайная статья





Функция 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.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.