
- •Оглавление
- •Комбинированный урок №12
- •Алгоритмы обработки символьной информации
- •Типы данных, используемые для обработки символьной информации
- •Операция присваивания
- •Операция сцепления
- •Операции отношения
- •Функции и команды обработки строк Процедуры
- •Функции
- •Примеры программ работы со строковыми данными
- •Вариант 1. Слова в тексте разделены одним пробелом. Тест
- •Var Text : String; {заданный непустой текст}
- •I, Number : Integer; {Number — количество слов в тексте}
- •Вариант 2. Слова в тексте разделены произвольным количеством пробелов.
- •Var Text : String; {заданный текст}
- •I, Number : Integer; {Number - количество слов в тексте}
- •Система тестов
- •If Flag then WriteLn(' — перевертыш. ')
- •Insert(Slovo2, Text, p); {вставка подстроки Slovo2 }
- •Var Words : Array[1..10] of String; {массив слов}
- •I, j, nWords : Integer; {nWords — количество слов}
- •Система тестов
- •Множества
- •Операции над множествами
- •Объединение Пересечение Разность
- •Контрольные вопросы
Вариант 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 }