Спецификация
1. Назначение: проверка чередования гласных и согласных в строке. Результат истина, если все буквы слова чередуются, и ложь в противном случае.
2. Имя: chered
3. Вид: функция
4. Перечень параметров
Таблица 21.12. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вxoд | Исходное слово | s | string | параметр-значение |
Возвращаемый результат | Признак чередования букв(истина – гласные и согласные чередуются, ложь –нет) | chered | boolean | - |
5. Заголовок п/п: function chered(s:string):boolean;
Метод решения
- Результату функции присвоить истина, так как пока не найдены нечередующиеся буквы
chered:=true;
- Определение ожидающейся буквы. Если первый символ принадлежит множеству гласных букв (множество mn1), то ожидаемая буква – согласная (переменной next присваивается значение истина), в противном случае ожидаемая буква – гласная (переменной next присваивается значение ложь)
;
- Перебор всех остальных букв, начиная со 2 по конец слова. Если очередная буква принадлежит множеству согласных букв (mn2) и ожидалась согласная, то следующая ожидаемая – гласная буква (next присваивается ложь). В противном случае, если очередная буква принадлежит множеству гласных букв (mn1) и ожидалась гласная, то следующая ожидаемая – согласная буква (next присваивается истина); в противном случае чередование нарушено (результату функции присваивается ложь)
Информационная модель
Таблица 21.13. Информационная модель
Назначение | Имя | Тип |
Индекс символа в строке | i | integer |
Признак ожидаемой буквы (истина – ожидается согласная буква, ложь – гласная) | next | boolean |
Программная модель
function chered(s:string):boolean;
const mn1:tsetchar=['А','И','Е','Ё','О','У','Э','Ы','Ю','Я',
'а','и','е','ё','о','у','э','ы','ю','я'];
mn2:tsetchar=['Б','В','Г','Д','Ж','З','Й','К','Л','М','Н',
'П','Р','С','Т','Ф','Х','Ц','Ч','Ш','Щ',
'б','в','г','д','ж','з','й','к','л','м','н',
'п','р','с','т','ф','х','ц','ч','ш','щ'];
var i:integer;
next:boolean;
begin
chered:=true;
if s[1] in mn1 then next:=true else next:=false;
for i:=2 to length(s) do
if (s[i] in mn2) and next then
next:=false
else
if (s[i] in mn1) and not next then
next:=true
else chered:=false
end;
Разработка подпрограммы 7
Спецификация
1. Назначение: удаление из заданной строки слов, которые не состоят из чередующихся гласных и согласных букв, и не являются симметричными относительно своего центра.
2. Имя: udalen
3. Вид: процедура
4. Перечень параметров
Таблица 21.14. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вxoд/выход | Обрабатываемая строка слов | s | string | параметр-переменная |
5. Заголовок п/п: procedure udalen(var s:string);
Метод решения
- Для всех слов строки проверяем, если очередное k-ое слово не является последовательностью чередующихся гласных и согласных или не является симметричным относительно центра слова, то удаляем его (при этом величина k не изменяется). В противном случае увеличиваем номер слова k на 1. Так как в процессе перебора количество слов может изменяться, то использовать цикл с параметром нельзя. Поэтому метод решения следующий
1.1 ;
1.2.
Информационная модель
Таблица 21.16. Информационная модель
Назначение | Имя | Тип |
Номер слова в строке | k | integer |
Позиция начала слова в строке | beg | integer |
Количество символов в слове | kol | integer |
Программная модель
procedure udalen(var s:string);
var k,beg,kol:integer;
begin
k:=1;
while k<=kolslov(s) do
if not chered(slovo(s,k,beg,kol)) or
not simmetr(slovo(s,k,beg,kol))then
delete(s,beg,kol+1)
else k:=k+1;
end;
Разработка программы
Метод решения
- Если при вводе строки ее символы не русские буквы и не пробелы, то строка задана неверно – сообщаем об этом пользователю и прекращаем выполнение программы
;
- удаление из заданной строки слов, которые не состоят из чередующихся гласных и согласных букв, и не являются симметричными относительно своего центра
udalen(s);
- Выводим результирующую строку. Если она пуста, то сообщаем об этом.
Информационная модель
Таблица 21.17. Информационная модель
Статус | Назначение | Имя | Тип |
Вход/выход | Строка слов | s | string |
Набор тестов
№ | Исходная строка | Ожидаемый результат |
'МИМО ЦИРКА МИМ ИМАМ ОГОГО ОСЕЛ ЛЕТЕЛ.КОК' | 'МИМ ОГОГО ЛЕТЕЛ' | |
'ПРООРП ПРИВЕТ.' | Пустая строка |