Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 12_Символьные и строковые переменные.doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
1.2 Mб
Скачать

Вариант 2. Слова в тексте разделены произвольным количеством пробелов.

Тест

Данные

Результат

"Кот на крыше"

N=3

Program KolSlov;

  Uses Crt;

Var Text : String; {заданный текст}

I, Number : Integer; {Number - количество слов в тексте}

  Flag   : Boolean;

  Letter   : Char;   {текущая буква }

BEGIN

  ClrScr;

  WriteLn('Введите текст :');

  ReadLn(Text);

  Number := 0; Flag := TRUE;

  For i := 1 to Length(Text) do {цикл по буквам текста}

  begin

  Letter := Text[i];   {текущая буква текста }

  If (Letter <> ' ') and Flag

  then Number := Number+1;

  Flag := (Letter=' ') {(Letter=' ') — логическое выражение,}

  end; {принимающее значения TRUE или FALSE }

  WriteLn;

  WriteLn('О т в е т : количество слов в тексте равно ', Number); ReadLn

END.

 

Пример 2. Определить, является ли заданное слово "перевёртышем" (слово называется "перевёртышем", если совпадает с собой после переворачивания).

Система тестов

N теста

Данные

Результат

1

Slovo = ''казак''

Otvet = ''Перевертыш''

2

Slovo = ''коза''

Otvet = ''Не перевертыш''

Program TurnOver;

  Uses Crt;

  Var Slovo   : String;

  Dlina, i : Integer;

  Flag : Boolean;

BEGIN

  ClrScr;

  Write('Введите слово : ');  ReadLn(Slovo);

  Dlina:= Length(Slovo);

{Сравниваются пары букв: первая буква с последней, вторая буква с предпоследней и т.д.} 

  i:=1;  Flag := TRUE;

  While (i <= Dlina/2) and Flag do   {цикл до первой несовпавшей }

  begin {пары букв (если такая есть)}

  Flag := (Slovo[i]=Slovo[Dlina-i+1]);

  i := i+1

  end;

  WriteLn; Write( 'О т в е т : слово ', Slovo);

If Flag then WriteLn(' — перевертыш. ')

  else WriteLn(' — не перевертыш');

  ReadLn

END.

Пример 3. B заданном тексте одно заданное слово везде заменить на другое заданное слово такой же длины.

Тест

Данные

Результат

Текст

Слово1

Слово2

''2sinx+siny''

''sin''

''cos''

''2cosx+cosy''

Эта программа, использующая стандартную функцию  Pos , не требует,  чтобы длины  заменяемого и вставляемого слов были одинаковыми.

Program Replace;

  Uses Crt;

  Var Text, Slovo1, Slovo2 : String;

  i, DlinaSlova, P : Integer;

BEGIN ClrScr;

  Write('Введите строку : '); ReadLn(Text);

  Write('Какое слово заменить ? '); ReadLn(Slovo1);

  Write('На какое слово заменить ? '); ReadLn(Slovo2);

  WriteLn; WriteLn('О т в е т : ');

  WriteLn('Исходный текст: ', Text); DlinaSlova:=Length(Slovo1);

  DlinaSlova:=Length(Slovo1);

  P:=Pos(Slovo1,Text); {номер позиции, с которой в строке Text }

{в первый раз встречается подстрока Slovo1  }

  While P>0 do {цикл продолжается до тех пор,пока подстрока}

{Slovo1 встречается в строке Text }

begin

Delete(Text, P, DlinaSlova); {удаление подстроки Slovo1, начинаю-}

  {щейся с позиции P, из строки Text  }