Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Символы / Strokatext.doc
Скачиваний:
5
Добавлен:
10.02.2015
Размер:
158.21 Кб
Скачать
  1. if UpCase(S[I])in Glas then Kgl:=Kgl+1 else

  2. if UpCase(S[I])in SoGlas then Ksg:=Ksg+1;

  3. if Ksg>Kgl then Result:=true;

  4. end;

  5. //процедура сортировки слов по алфавиту методом нахождения мини-

  6. //мального

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

  8. var I,J,Imin:integer;

  9. Min:ShortString;

  10. begin

  11. for I:=1 to N-1 do

  12. begin

  13. Min:=A[I];

  14. Imin:=I;

  15. for J:=I+1 to N do

  16. if A[J]<Min then

  17. begin

  18. Min:=A[J];

  19. Imin:=J;

  20. end;

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

  22. A[I]:=Min;

  23. end;

  24. end;

  25. begin

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

  27. Readln(S);

  28. S:=RusIn(s);

  29. Writeln(Rus(S));

  30. K:=0;

  31. while S[Length(S)] in Prep do //удаление символов-разделителей

  32. //в конце строки

  33. Delete(S,Length(S),1);

  34. while Length(S)>0 do

  35. begin

  36. whileS[1]inPrepdo// удаление символов-разделителей

  37. //в начале строки

  38. Delete(S,1,1);

  39. N2:=Length(S);//установка начального значения для номера ми-

  40. //нимальной позиции символа-разделителя

  41. forI:=1tonpdo//цикл определения номера минимальной по-

  42. //зиции символа-разделителя

  43. begin

  44. N1:=Pos(Rasd[I],S);//определение позиции первого вхождения

  45. //в строку очередного символа-разделителя

  46. if (N1<N2)and(N1>0) then N2:=N1;

  47. end;

  48. ifN2<Length(S)thenN2:=N2-1; //определение позиции оконча-

  49. //ния первого слова

  50. St:=Copy(S,1,N2);//копирование первого слова в служебную пе-

  51. //ременную

  52. Delete(S,1,N2);//удаление первого слова из строки

  53. Writeln(Rus(St));

  54. If Slovo(St) then //проверка слова на удовлетворение требо-

  55. //ваниям задания

  56. begin

  57. Writeln(Rus(St));

  58. K:=K+1; //запоминание слова в массиве

  59. A[K]:=St;

  60. end;

  61. end;

  62. if k=0 then Writeln(Rus('Нужных слов в строке нет'))

  63. else

  64. begin

  65. Sort(A,K);

  66. writeln(Rus('Нужные слова'));

  67. for I:=1 to K do

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

  69. end;

  70. Readln;

  71. end.

Возможен и третий подход при решении задачи выделения слов, содержащихся в строке. Этот подход практически не предусматривает использования стандартных подпрограмм. Вводится признак, означающий начало слова. Слово начинается, если очередной символ не является разделителем, и к этому моменту слово еще не началось. В случае начала слова признак получает значение “истина” и все символы, не являющиеся разделителями, рассматриваются символами очередного слова, пока не встретится разделитель или очередной символ не будет последним символом строки. В этом случае они копируются во временную переменную.

Пример 3 обработки символьной строки. Найти в строке все слова, которые содержат одновременно все гласные буквы латинского алфавита. Строчные и заглавные буквы не различать.

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

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