Структурное программирование и пошаговая детализация. Пример решения задачи (1106270)
Текст из файла
Вылиток А.А.Структурное программирование и пошаговаядетализация. Пример решения задачиЗадача. Дана последовательность, содержащая от 2 до m слов (m≥2), в каждом из которых от 1 до n(n≥1) строчных латинских букв; между соседними словами – не менее одного пробела, за последнимсловом – точка. Напечатать те слова последовательности, которые отличны от последнего слова исимметричны (т.е. читаются одинаково слева направо и справа налево).Построить структурированную схему и соответствующую этой схеме программу на языке Паскаль,используя метод пошаговой детализации.Реше ниеДля представления слова в программе будем использовать строку длины n (слово=packed array[1..n] ofchar).
В случае необходимости введенное слово будем дополнять справа соответствующим числомпробелов. Поскольку каждое вводимое слово требуется сравнивать с последним словом, все вводимыеслова следует сначала запомнить. Для этого воспользуемся массивом строк S: array[1..m] of слово .Шаг1.Ввести последовательность слов в массив Sи напечатать все симметричные слова,отличные от последнего слова.Шаг2.Решение задачи очевидно разбивается на два последовательных блока: ввести данные в массив;затем, просматривая массив от начала до конца, напечатать те слова, которые удовлетворяют требуемымусловиям.Ввод последовательности словв массив SВывод симметричных слов,отличных от последнегоШаг3а.Детализируем сначала ввод последовательности слов: Очередное слово записывается в строкуS[i], где i – переменная-счетчик слов; счет начинается с 1, по окончании ввода значение i будет равноколичеству введенных слов.
Поскольку последовательность не пуста (есть хотя бы одно слово),организуем ввод, используя циклическую конструкцию с постусловием.Присвоить начальноезначение счетчику(инициализация i)i:=i+1Ввод i-го слова и егозапись в строку S[i]КонецпоследовательностиданетШаг4а.Теперь уточним блоки, входящие в конструкцию, полученную на шаге 3а. Для того, чтобыпервое слово записывалось в S[ 1], очевидно, начальное значение i должно быть нулевым.Для ввода слова понадобится вспомогательная символьная переменная c: char.i:=0Ввод осуществляется посимвольно с помощью оператора read(c).Сначала нужно пропустить лишние пробелы:read(c)c<>’9’данетФрагмент программы, соответствующий этой блок-схеме, на Паскале записывается так:repeat read(c) until c< >’9’ .После пропуска пробелов вводим символы слова (по условию в слове есть хотя бы один символ). Длязаписи очередного введенного символа в i-е слово используем оператор S[i][j]:=c, где j – номерсимвола в слове, нумерация с единицы.
Признак конца слова – очередной символ оказался пробелом илиточкой. Пока не конец слова, записываем очередной символ в массив S[i] и считываем в переменную cследующий символ:j:=1(c<>’9’)and(c<>’.’)даS[i][j]:=cj:=j+1read(c)нетСоответствующий фрагмент на Паскале:j:=1; while (c<>’9’) and (c<>’.’) do begin S[i][j]:=c; j:=j+1; read(c) endТеперь запишем пробелы в оставшиеся позиции текущего слова S[i]. Пробелами нужно заполнитьэлементы массива S[i] с номерами от j до n. Приведем сразу фрагмент на Паскале:for j:=j to n do S[i][j]:= ’9’Если в i-м слове n символов (т.е.
максимально возможное число символов в слове), то перед циклом forзначение j будет равно n+1 и тело цикла for не выполнится ни разу.Теперь мы можем вернуться к блок-схеме Шага 3а и записать соответствующий ей фрагмент на Паскале.Условие «Конец последовательности» в данной схеме можно теперь записать так: c=’.’{ввод последовательности слов в массив S:}i:=0;repeati:=i+1;{ ввод i-го слова: }repeat read(c) until c< >’9’; {пропустили пробелы; в c – первый символ i-го слова}j:=1; while (c<>’9’) and (c<>’.’) do{записать очередной символ слова:}begin S[i][j]:=c; j:=j+1; read(c) end ;{конец массива S[i] заполняем пробелами:}for j:=j to n do S[i][j]:= ’9’until c=’.’ { выходим из цикла, когда дошли до конца последовательности}З А Д А Н И Е .
Детализировать Шаг 3б: «вывод симметричных слов, отличных от последнего»(возможно, используя более мелкие шаги), построить окончательную блок-схему и, приведянеобходимые описания типов и переменных, написать полную программу, решающую поставленнуюзадачу..
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.