Составить массив слов, входящих в строку - 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.

Объяснение кода листинга программы

  1. В начале кода объявляются константы и переменные:
    • Константа ChSet представляет собой массив знаков-разделителей слов, которые не сохраняются внутри слов.
    • Переменная MaxN устанавливается равной 256, деленной на 2, что позволяет выделить максимальное количество слов в строке.
    • Объявляется массив m типа Array[1..MaxN] of String, который будет хранить слова из строки.
    • Переменная Km устанавливается равной 0, что соответствует началу массива.
    • Переменные i и j устанавливаются в начало цикла.
    • Переменная St инициализируется строкой Мама: мыла раму, а роза упала на лапу Азора!, которую мы будем разбирать на слова.
  2. Затем следует блок кода, который разбирает строку на слова:
    • Строка Мама: мыла раму, а роза упала на лапу Азора! разбивается на слова.
    • Каждое слово добавляется в массив m.
    • Если текущее слово является последним словом в строке, то значение переменной Km увеличивается на единицу, и новое слово добавляется в массив m.
    • Если текущее слово не является последним словом в строке, то код проверяет, является ли текущее слово одним из знаков-разделителей слов.
    • Если текущее слово является знаком-разделителем, то значение переменной j устанавливается равным значению переменной i.
    • Если текущее слово не является знаком-разделителем, то значение переменной j устанавливается равным значению переменной i.
    • Цикл продолжается до тех пор, пока все слова не будут обработаны.
  3. В конце кода выводится содержимое массива m:
    • Для каждого элемента массива m выводится его значение.

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы