Составить массив слов, входящих в строку - Turbo Pascal
Формулировка задачи:
Составить массив слов, входящих в строку s. Одинаковые слова не должны повторяться. Порядок следования слов в массиве должен соответствовать порядку вхождения каждого слова в строку.
Решение задачи: «Составить массив слов, входящих в строку»
textual
Листинг программы
Const ChSet = [' ','.',',',':',';','!']; {знаки-разделители слов - в самих словах не сохраняются} MaxN = 256 div 2; Var m : Array[1..MaxN] of String; Km : Byte; i,j : Byte; St : String; Begin { Readln(St); } St:='. Мама: мыла раму, а роза упала на лапу Азора!'; St:=' '+St+' '; Km:=0; j:=1; If Length(St)=1 then Begin Inc(Km); m[Km]:=St; End else For i:=1 to Length(St) do Begin If ((St[i] in ChSet) and (St[j] in ChSet)) and (i-j>1) then Begin Inc(Km); m[Km]:=Copy(St,j+1,i-j-1); j:=i; End else If (St[i] in ChSet) then j:=i; End; For i:=1 to Km do Writeln(m[i]); End.
Объяснение кода листинга программы
- В начале кода объявляются константы и переменные:
- Константа
ChSet
представляет собой массив знаков-разделителей слов, которые не сохраняются внутри слов. - Переменная
MaxN
устанавливается равной 256, деленной на 2, что позволяет выделить максимальное количество слов в строке. - Объявляется массив
m
типаArray[1..MaxN] of String
, который будет хранить слова из строки. - Переменная
Km
устанавливается равной 0, что соответствует началу массива. - Переменные
i
иj
устанавливаются в начало цикла. - Переменная
St
инициализируется строкойМама: мыла раму, а роза упала на лапу Азора!
, которую мы будем разбирать на слова.
- Константа
- Затем следует блок кода, который разбирает строку на слова:
- Строка
Мама: мыла раму, а роза упала на лапу Азора!
разбивается на слова. - Каждое слово добавляется в массив
m
. - Если текущее слово является последним словом в строке, то значение переменной
Km
увеличивается на единицу, и новое слово добавляется в массивm
. - Если текущее слово не является последним словом в строке, то код проверяет, является ли текущее слово одним из знаков-разделителей слов.
- Если текущее слово является знаком-разделителем, то значение переменной
j
устанавливается равным значению переменнойi
. - Если текущее слово не является знаком-разделителем, то значение переменной
j
устанавливается равным значению переменнойi
. - Цикл продолжается до тех пор, пока все слова не будут обработаны.
- Строка
- В конце кода выводится содержимое массива
m
:- Для каждого элемента массива
m
выводится его значение.
- Для каждого элемента массива