Разработка подпрограммы 4




Спецификация

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;

 

Метод решения

  1. Обнуление счетчика количества обнаруженных слов

kol:=0;

  1. Установка индекса просматриваемого символа строки в 1

i:=1;

  1. Обнуление счетчика подсчета длины найденного слова

wordsize:=0;

  1. Установка на начало первого слова

wordpos:=1;

  1. Пока не нашли нужное по номеру слово и не вышли за пределы заданной строки повторять

а) если очередной символ пробел, то количество найденных слов увеличить на 1 и после этого проверить – если количество обнаруженных слов еще не достигло номера искомого слова, то обнулить размер найденного слова и определить начало нового слова как позицию пробела плюс 1.

В противном случае (если очередной символ не пробел), то увеличить длину текущего слова на 1

б) перейти к следующему символу строки

i:=i+1;

  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;

Метод решения

  1. Результату функции присвоить истина, так как пока не найдены несимметричные буквы

simmetr:=true;

  1. Перебирать номера букв от единицы до половины строки символов. Если очередная буква левой половины не совпадает с симметрично расположенной буквой в правой половине слова, то результату функции присвоить ложь

Информационная модель

Таблица 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;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: