Спецификация
1. Назначение: выделение из строки слова, заданного его порядковым номером (считается, что все слова пронумерованы подряд, начиная с 1). Кроме этого, формируются номер позиции в строке, начиная с которой в строке располагается искомое слово, и длина этого слова. Если слово, с указанным номером в строке отсутствует, то возвращаемый результат – пустая строка, а номер позиции и длина слова 0.
2. Имя: slovo
3. Вид: функция
4.Перечень параметров
Таблица 21.8. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вxoд | Исходная строка слов | s | string | параметр-значение |
Вход | Номер искомого слова | k | integer | параметр-значение |
Выход | Номер позиции в строке, с которой начинается слово | wordpos | integer | параметр-переменная |
Выход | Длина слова (количество символов в слове) | wordsize | integer | параметр-переменная |
Возвращаемый результат | Искомое слово | slovo | string | - |
5. Заголовок п/п:
function slovo(s:string; k:integer;var wordpos,wordsize:integer):string;
Метод решения
- Обнуление счетчика количества обнаруженных слов
kol:=0;
- Установка индекса просматриваемого символа строки в 1
i:=1;
- Обнуление счетчика подсчета длины найденного слова
wordsize:=0;
- Установка на начало первого слова
wordpos:=1;
- Пока не нашли нужное по номеру слово и не вышли за пределы заданной строки повторять
а) если очередной символ пробел, то количество найденных слов увеличить на 1 и после этого проверить – если количество обнаруженных слов еще не достигло номера искомого слова, то обнулить размер найденного слова и определить начало нового слова как позицию пробела плюс 1.
В противном случае (если очередной символ не пробел), то увеличить длину текущего слова на 1
б) перейти к следующему символу строки
i:=i+1;
- Если по выходу из цикла количество обнаруженных слов равняется номеру необходимого слова, то результату функции присвоим выделяемое из строки слово, в противном случае (слово с заданным номером не существует) результату функции присваиваем пустую строку и обнуляем выходные параметры (номер позиции, с которой начинается слово, и количество символов в слове)
Информационная модель
Таблица 21.9. Информационная модель
Назначение | Имя | Тип |
Индекс символа в строке | i | integer |
Счетчик слов | kol | integer |
Программная модель
function slovo(s:string;k:integer;var wordpos,wordsize:integer):string;
var kol,i:integer;
begin
kol:=0;
i:=1;
wordsize:=0;
wordpos:=1;
while(kol<>k)and(i<=length(s)) do
begin
if s[i]=' ' then
begin
kol:=kol+1;
if kol<>k then
begin
wordsize:=0;
wordpos:=i+1
end
end
else wordsize:=wordsize+1;
i:=i+1
end;
if kol=k then
slovo:=copy(s,wordpos,wordsize)
else
begin
slovo:='';
wordpos:=0;
wordsize:=0
end
end;
Разработка подпрограммы 5
Спецификация
1. Назначение: проверка симметричности слова относительно его центра. Результат истина, если слово симметрично, и ложь в противном случае.
2. Имя: simmetr
3. Вид: функция
4. Перечень параметров
Таблица 21.10. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вxoд | Исходное слово | s | string | параметр-значение |
Возвращаемый результат | Признак симметричности слова (истина – слово симметрично, ложь –несимметрично) | simmetr | boolean | - |
5. Заголовок п/п: function simmetr(s:string):boolean;
Метод решения
- Результату функции присвоить истина, так как пока не найдены несимметричные буквы
simmetr:=true;
- Перебирать номера букв от единицы до половины строки символов. Если очередная буква левой половины не совпадает с симметрично расположенной буквой в правой половине слова, то результату функции присвоить ложь
Информационная модель
Таблица 21.11. Информационная модель
Назначение | Имя | Тип |
Индекс символа в строке | i | integer |
Программная модель
function simmetr(s:string):boolean;
var i:integer;
begin
simmetr:=true;
for i:=1 to length(s) div 2 do
if s[i]<>s[length(s)-i+1] then simmetr:=false
end;