Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Символы / Strokatext.doc
Скачиваний:
5
Добавлен:
10.02.2015
Размер:
158.21 Кб
Скачать
  1. program strokapr3;

  2. {$APPTYPE CONSOLE}

  3. uses

  4. SysUtils;

  5. type Mas=array of String;

  6. Mn=set of Char;

  7. const Prep=[' ', '.', ',', '?', '!', ':', ';', '-'];//множество

  8. //символов-разделителей

  9. Glas=['A','E','I','O','U','Y'];//множество гласных букв

  10. Var s,St:String;

  11. A:Mas;

  12. Pr:Boolean;

  13. I,K:Integer;

  14. function Rus(S:String):String;

  15. var I:Byte;

  16. begin

  17. Result:='';

  18. for I:=1 to Length(S) do

  19. case S[I] of

  20. 'А'..'п': Result:=Result+Chr(Ord(S[I])-64);

  21. 'р'..'я': Result:=Result+Chr(Ord(S[I])-16);

  22. 'Ё': Result:=Result+Chr(240);

  23. 'ё': Result:=Result+Chr(241);

  24. else

  25. Result:=Result+S[I];

  26. end;

  27. end;

  28. function RusIn(S:String):String;

  29. var I:Integer;

  30. begin

  31. Result:='';

  32. for I:=1 to Length(S) do

  33. case Ord(S[I]) of

  34. 128..175: Result:=Result+Chr(Ord(S[I])+64);

  35. 224..239: Result:=Result+Chr(Ord(S[I])+16);

  36. 240: Result:=Result+Chr(168);

  37. 241: Result:=Result+Chr(184);

  38. else

  39. Result:=Result+S[I];

  40. end;

  41. end;

  42. //функция определения наличия в слове всех гласных букв

  43. function WseGlasn(S:String):Boolean;

  44. var I,N:integer;

  45. Gl:Mn;

  46. begin

  47. Gl:=Glas;//множество всех гласных букв

  48. I:=1;

  49. Result:=false;

  50. N:=Length(S);

  51. while(I<=N)andnotResultdo//проверка символов слова, //пока не будет достигнут его конец и пока множество гласных, //отсутствующих в слове, не станет пустым

  52. begin

  53. Gl:=Gl-[UpCase(S[I])]; //исключение из множества гласных

  54. //очередного символа слова

  55. ifGl=[]thenResult:=true//если получено пустое множе-

  56. //ство, то слово удовлетворяет требованию

  57. else I:=I+1;

  58. end;

  59. end;

  60. procedure Sort(Var A:Mas;N:Integer);

  61. Var I,j,Imin:integer;

  62. Min:String;

  63. begin

  64. for I:=N-1 downto 1 do

  65. begin

  66. Min:=A[I];

  67. Imin:=I;

  68. for J:=I-1 downto 0 do

  69. if A[J]<Min then

  70. begin

  71. Min:=A[J];

  72. Imin:=J;

  73. end;

  74. A[Imin]:=A[I];

  75. A[I]:=Min;

  76. end;

  77. end;

  78. begin

  79. Writeln(Rus('Введите строку символов'));

  80. Readln(S);

  81. S:=RusIn(s);

  82. Writeln(Rus(S));

  83. K:=0;

  84. Pr:=false;

  85. St:='';

  86. for I:=1 to Length(S) do

  87. begin

  88. If not (s[I] in Prep) then

  89. begin

  90. Pr:=true;

  91. St:=St+S[I];

  92. end;

  93. if (S[I] in Prep) or (i=Length(S)) then

  94. begin

  95. Pr:=false;

  96. if St<>'' then

  97. begin

  98. Writeln(Rus(St));

  99. If WseGlasn(St) then

  100. begin

  101. Writeln(Rus(St));

  102. K:=K+1;

  103. SetLength(A,K);

  104. A[K-1]:=St;

  105. end;

  106. end;

  107. St:='';

  108. end;

  109. end;

  110. if k=0 then

  111. Writeln(Rus('Слов со всеми гласными в строке нет'))

  112. else

  113. begin

  114. Sort(A,K);

  115. writeln(Rus('Слова со всеми гласными буквами'));

  116. for I:=0 to K-1 do

  117. Writeln(Rus(A[I]));

  118. end;

  119. Readln;

  120. end.

Пример 4 обработки символьной строки.

Удалить из заданной строки все символы-разделители и подсчитать в полученной строки количество вхождений всех двухсимвольных сочетаний. Вывести все двухсимвольные сочетания, которые встретились в строке, и количество раз, которое они встретились, Двухсимвольное сочетание – два рядом расположенных символа.

  1. program strokapr4;

  2. {$APPTYPE CONSOLE}

  3. uses

  4. SysUtils;

  5. const Nn=Chr(0);

  6. Nk=Chr(255);

  7. type Mas=array[Nn..Nk,Nn..Nk] of integer;

  8. const Prep=[' ', '.', ',', '?', '!', ':', ';', '-'];

  9. Var s,St:String;

  10. A:Mas;

  11. I,J,K:Integer;

  12. C1,C2:Char;

  13. function Rus(S:String):String;

  14. var I:Byte;

  15. begin

  16. Result:='';

  17. for I:=1 to Length(S) do

  18. case S[I] of

  19. 'А'..'п': Result:=Result+Chr(Ord(S[I])-64);

  20. 'р'..'я': Result:=Result+Chr(Ord(S[I])-16);

  21. 'Ё': Result:=Result+Chr(240);

  22. 'ё': Result:=Result+Chr(241);

  23. else

  24. Result:=Result+S[I];

  25. end;

  26. end;

  27. function RusIn(S:String):String;

  28. var I:Integer;

  29. begin

  30. Result:='';

  31. for I:=1 to Length(S) do

  32. case Ord(S[I]) of

  33. 128..175: Result:=Result+Chr(Ord(S[I])+64);

  34. 224..239: Result:=Result+Chr(Ord(S[I])+16);

  35. 240: Result:=Result+Chr(168);

  36. 241: Result:=Result+Chr(184);

  37. else

  38. Result:=Result+S[I];

  39. end;

  40. end;

  41. begin

  42. Writeln(Rus('Введите строку символов'));

  43. Readln(S);

  44. S:=RusIn(s);

  45. Writeln(Rus(S));

  46. St:='';

  47. for I:=1 to Length(S) do

  48. if not (S[I] in Prep) then

  49. St:=St+S[I];

  50. Writeln(Rus(St));

  51. K:=Length(St);

  52. for I:=1 to K-1 do

  53. A[St[I],St[I+1]]:= A[St[I],St[I+1]]+1;

  54. for C1:=Nn to Nk do

  55. for C2:=Nn to Nk do

  56. if A[C1,C2]<>0 then Write(Rus(C1):1,Rus(C2):2,' - ',A[C1,C2]:3,'|');

  57. Readln;

  58. end.

Задания на обработку строк

Строка символов может содержать до 255 символов. Слово - после­довательность символов, не содержащая символов-разделителей. Слова друг от друга отделяются одним или несколькими символами-разделителями. В начале и в конце строки могут стоять разделители (произвольное количество).

1.Найти в строке все слова, начинающиеся на заданную букву. Найденные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

2.Найти в строке все слова, оканчивающиеся на заданную букву. Найденные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

3.Найти в строке все слова, в которых заданная буква встре­чается более одного раза. Найденные слова распечатать в алфавит­ном порядке. Если нужных слов нет, то выдать сообщение.

4.Найти в строке все слова, являющиеся симметричными. Най­денные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

5.Найти в строке все слова, в которых гласные и согласные чередуются. Найденные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

6.Найти в строке все слова, в которых буквы не повторяются. Найденные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

7.Найти в строке все слова, в которых каждая буква встреча­ется более одного раза. Найденные слова распечатать в алфавитном порядке. Если нужных слов нет, то выдать сообщение.

8.Найти в строке самое короткое и самое длинное слова. Подсчитать, сколько раз каждая буква слова встречается в этом слове.

9.Найти в строке самое короткое и самое длинное слова, в которых нет повторяющихся букв.

10.Найти в строке самое короткое и самое длинное слова, в которых каждая буква встречается ровно по два раза.

11.Найти в строке самое короткое и самое длинное слова, в которых одновременно присутствуют все гласные буквы.

12.Найти в строке все слова, начинающиеся на заданную бук­ву. Найденные слова распечатать в порядке, обратном алфавитному. Если нужных слов нет, то выдать сообщение.

13.Найти в строке все слова, оканчивающиеся на заданную букву. Найденные слова распечатать в порядке, обратном алфавит­ному. Если нужных слов нет, то выдать сообщение.

14.Найти в строке все слова, в которых заданная буква встречается более одного раза. Найденные слова распечатать в по­рядке, обратном алфавитному. Если нужных слов нет, то выдать со­общение.

15.Найти в строке все слова, являющиеся несимметричными. Най­денные слова распечатать в порядке, обратном алфавитному. Если нужных слов нет, то выдать сообщение.

16.Найти в строке все слова, в которых гласные и согласные чередуются. Найденные слова распечатать в порядке, обратном ал­фавитному. Если нужных слов нет, то выдать сообщение.

17.Найти в строке все слова, в которых есть не менее трех повторяющихся букв. Найденные слова распечатать в порядке, обратном алфавитному. Если нужных слов нет, то выдать сообщение.

18.Найти в строке все слова, в которых каждая гласная буква встре­чается более одного раза. Найденные слова распечатать в порядке, обратном алфавитному. Если нужных слов нет, то выдать сообщение.

19.Найти в строке самое короткое и самое длинное слова, на­чинающиеся и оканчивающиеся на заданные буквы. Подсчитать, сколько раз каждая буква слова встречается в этих словах.

20.Найти в строке самое короткое и самое длинное слова, в которых средняя буква совпадает с заданной. Рассматривать слова только с нечетным количеством букв. Если таких слов нет, то вы­дать сообщение.

21.Найти в строке все слова, начинающиеся с заглавной буквы и распечатать их в

алфавитном порядке. Если таких слов нет, то вы­дать сообщение.

22.Найти в строке все слова, начинающиеся на гласную букву и оканчивающиеся согласной. Найденные слова распечатать в алфа­витном порядке. Если таких слов нет, то выдать сообщение.

23.Найти в строке все слова, начинающиеся на гласную букву и оканчивающиеся гласной. Найденные слова распечатать в порядке, обратном алфавитному. Если таких слов нет, то выдать сообщение.

24.Найти в строке все слова, начинающиеся заглавной соглас­ной буквой и заканчивающиеся согласной. Найденные слова распеча­тать в алфавитном порядке. Если таких слов нет, то выдать сообщение.

25.Найти в строке все слова, начинающиеся заглавной гласной буквой и оканчивающиеся гласной. Найденные слова распечатать в порядке, обратном алфавитному. Если таких слов нет, то выдать сообщение.

26.Найти в строке все слова, в которых все символы встреча­ются ровно по два раза. Распечатать их в алфавитном порядке. Если таких слов нет, то выдать сообщение.

27.Найти в строке все слова, в которых буквенные и небуквенные символы чередуются. Найденные слова распечатать в алфавитном порядке. Если таких слов нет, то выдать сообщение.

28.Найти в строке все симметричные слова, начинающиеся на гласную букву и оканчивающиеся гласной. Найденные слова распеча­тать в порядке, обратном алфавитному. Если таких слов нет, то выдать сообщение.

29.Найти в строке все слова, начинающиеся заглавной соглас­ной буквой и оканчивающиеся согласной. Найденные слова распеча­тать в порядке, обратном алфавитному. Если таких слов нет, то вы­дать сообщение.

30.Найти в строке все слова, начинающиеся заглавной гласной буквой и в которых количество согласных превышает количество гласных. Найденные слова распечатать в порядке, обратном алфа­витному. Если таких слов нет, то выдать сообщение.

Соседние файлы в папке Символы