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




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

1. Назначение: ввод исходной строки с клавиатуры и контроль за тем, что она состоит из русских букв и пробелов, разделяющих слова. Оканчивается строка точкой, после которой символы не обрабатываются. При успешном вводе строки формируется значение истина, при неуспешном – ложь. Строка подготавливается для дальнейшей обработки – удаляются завершающая точка и все символы, следующие за ней, в конец вставляется пробел (для того, чтобы каждое слово оканчивалось пробелом), подавляются повторяющиеся пробелы (для того, чтобы слово оканчивалось только одним пробелом).

2. Имя: control

3. Вид: функция

4. Перечень параметров

Таблица 21.4. Перечень параметров

Статус Назначение Имя Тип Вид
Выход Заданная вводом строка s string параметр-переменная
Вход Множество символов, из которых может состоят вводимая строка (исключая точку и символы, расположенные после нее) simb tsetchar параметр-константа
Возвращаемый результат Признак правильности ввода строки (истина –успешный ввод, в противном случае –ложь) control boolean -

Примечание: type tsetchar=set of char;

5. Заголовок п/п:

function control(var s:string; const simb: tsetchar):Boolean;

 

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

1. Ввод с клавиатуры строки s;

  1. Если точка отсутствует в строке или располагается в ее начале, то формируются возвращаемый результат со значением ложь и пустое значение выходной строки и осуществляется выход из подпрограммы

;

  1. Для дальнейшей обработки исходная строка усекается на месте завершающей точки и в конец добавляется пробел, который является признаком окончания слова

s:=copy(s,1,pos('.',s)-1) + ' ';

  1. В исходной строке удаляются повторяющиеся пробелы – между словами остается по одному пробелу. Это осуществляется с помощью подпрограммы замены в заданной строке фрагмента из двух подряд идущих пробела на один пробел

redfrag(s,' ',' ');

  1. Перебираются все символы и проверяется их принадлежность множеству возможных символов simb. Если очередной символ не принадлежит этому множеству то формируются возвращаемый результат со значением ложь и пустое значение выходной строки и осуществляется выход из подпрограммы

;

  1. Успешное завершение ввода строки

control:=true

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

Таблица 21.5. Информационная модель

Назначение Имя Тип
Индекс символа в строке i integer

Программная модель

function control(var s:string; const simb:tsetchar):boolean;

var i:integer;

begin

 

{ввод строки с клавиатуры}

writeln('Исходная строка?');

readln(s);

 

{проверка наличия и местоположения точки; если точки нет или она стоит в начале строки, то формируем ошибку при вводе и выходим из подпрограммы}

if pos('.',s)<=1 then

begin

control:=false;

s:='';

exit

end;

 

{формирование обрабатываемой части строки (до точки) и добавление пробела в конец строки}

s:=copy(s,1,pos('.',s)-1)+' ';

 

{подавление повторяющихся пробелов – остается по одному пробелу}

redfrag(s,' ',' ');

 

{перебор всех символов строки и проверка их принадлежности множеству допустимых символов}

for i:=1 to length(s) do

{если очередной символ не входит в множество возможных}

if not (s[i] in simb) then

{ошибочный ввод исходной строки}

begin

control:=false;

s:='';

exit

end;

 

{успешное завершение ввода строки}

control:=true

end;

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

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

1. Назначение: вычисление количества слов в строке (каждое слово в строке оканчивается одним пробелом)

2. Имя: kolslov

3. Вид: функция

4. Перечень параметров

Таблица 21.6. Перечень параметров

Статус Назначение Имя Тип Вид
Вxoд Исходная строка слов s string параметр-значение
Возвращаемый результат Количество слов в строке kolslov integer -

5. Заголовок п/п: function kolslov(s:string):integer;

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

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

sum:=0;

  1. Перебор всех символов строки и при обнаружении очередного пробела увеличение счетчика слов на 1, так как пробел является признаком завершения слова

;

  1. Формирование возвращаемого результата функции

kolslov:=sum

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

Таблица 21.7. Информационная модель

Назначение Имя Тип
Индекс символа в строке i integer
Счетчик пробелов sum integer

Программная модель

function kolslov(s:string):integer;

var i,sum:integer;

begin

sum:=0;

for i:=1 to length(s)do

if s[i]=' ' then sum:=sum+1;

kolslov:=sum

end;



Поделиться:




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

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


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