Постановка задачи. Сформировать строку из слов исходной строки, не содержащих заданную букву.
Шаг 1. Общая структура программы
Программа на процедурном языке программирования состоит из данных и действий по их обработке.
program Strings;
{ Описание данных – констант, типов и переменных }
begin
{ Обработка данных }
end.
Шаг 2. Разработка структуры данных
Из постановки задачи следует, что на вход программы подаётся строка и символ. В результате работы программы необходимо получить новую строку.
program Strings;
var
{ Входные данные }
d: string; { d – исходная строка }
c: char; { c – заданный символ }
{ Выходные данные }
r: string; { r – полученная строка }
begin
{ Обработка данных }
end.
Шаг 3. Разработка тестов
№ теста | Входные данные | Ожидаемые результаты | Смысл теста |
---|---|---|---|
1 |
d = ‘Нарушитель был оштрафован на двадцать шиллингов ’ с = ‘а’ |
r = ‘был шиллингов ’ | Некоторые слова содержат заданную букву. |
2 |
d = ‘Нарушитель был оштрафован на двадцать шиллингов ’ с = ‘и’ |
r = ‘был оштрафован на двадцать ’ | Первое и последнее слова содержат заданную букву. |
3 |
d = ‘Нарушитель был оштрафован на двадцать шиллингов ’ с = ‘н’ |
r = ‘Нарушитель был двадцать ’ | Некоторые слова содержат заданную букву. ‘Н’ и ‘н’ – разные символы. |
4 |
d = ‘Нарушитель был оштрафован на двадцать шиллингов ’ с = ‘л’ |
r = ‘оштрафован на двадцать ’ | Некоторые слова содержат заданную букву. |
5 |
d = ‘Нарушитель был оштрафован на двадцать шиллингов ’ с = ‘к’ |
r = ‘Нарушитель был оштрафован на двадцать шиллингов ’ | Ни одно слово не содержит заданную букву. |
6 |
d = ‘ёлка ёж ёмкость’ с = ‘ё’ |
r = ‘’ | Все слова содержат заданную букву. |
Шаг 4. Разработка общей структуры программы
Программа должна состять из трёх основных частей – ввод исходных данных, получение результатов, вывод полученных результатов. Однако в данной задаче требуется ввести несколько строк (и соответствующих символов), пока не будет достигнут конец исходного файла. Поэтому эти действия надо будет вложить в цикл.
program Strings;
var
{ Входные данные }
d: string; { d – исходная строка }
c: char; { c – заданный символ }
{ Выходные данные }
r: string; { r – полученная строка }
begin
{ Открытие файла для чтения }
{ Цикл пока не достигнут конец файла }
begin
{ Ввод исходных данных }
{ Обработка строки, формирование новой строки }
{ Вывод результатов }
end;
{ Закрытие файла }
end.
Шаг 5. Разработка ввода и вывода
Запрограммируем ввод и вывод согласно входной и выходной форме. Для работы с файлом потребуется файловая переменная типа TextFile. Результаты будем выводить на экран.
В качестве заглушки для обработки данных напишем пока присваивание новой строке значения исходной строки.
Входная форма
Выходная форма
program Strings;
var
{ Входные данные }
d: string; { d – исходная строка }
c: char; { c – заданный символ }
{ Выходные данные }
r: string; { r – полученная строка }
{ Промежуточные данные }
f: TextFile; { переменная для работы с файлом }
begin
{ Открытие файла для чтения. Пока используем фиксированное имя файла }
AssignFile(f, 'input.txt');
Reset(f);
while not eof(f) do
begin
{ Ввод исходных данных }
readln(f, d);
readln(f, c);
{ Обработка строки, формирование новой строки }
r := d;
{ Вывод результатов }
writeln('Исходная строка: ''', d, '''');
writeln('Заданный символ: ''', c, '''');
writeln('Полученная строка: ''', r, '''');
end;
{ Закрытие файла }
CloseFile(f);
end.
Шаг 6. Разработка вычислительной части программы
Используем стандартные процедуры и функции для удаления пробелов, стоящих в начале строки, выделения слова, проверки наличия заданного символа, удаления обработанного слова из исходной строки (см. пример в лекции «Строки»).