Спецификация. Метод решения
Спецификация
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;
- Если точка отсутствует в строке или располагается в ее начале, то формируются возвращаемый результат со значением ложь и пустое значение выходной строки и осуществляется выход из подпрограммы
;
- Для дальнейшей обработки исходная строка усекается на месте завершающей точки и в конец добавляется пробел, который является признаком окончания слова
s:=copy(s,1,pos('.',s)-1) + ' ' ;
- В исходной строке удаляются повторяющиеся пробелы – между словами остается по одному пробелу. Это осуществляется с помощью подпрограммы замены в заданной строке фрагмента из двух подряд идущих пробела на один пробел
redfrag(s,' ',' ') ;
- Перебираются все символы и проверяется их принадлежность множеству возможных символов simb. Если очередной символ не принадлежит этому множеству то формируются возвращаемый результат со значением ложь и пустое значение выходной строки и осуществляется выход из подпрограммы
;
- Успешное завершение ввода строки
control:=true
|