Length(s) - Определяет длину строки s (количество символов в строке)
Pos(s1, s) - Определяет позицию подстроки s1 в строке s. Если не найдена — возвращает 0
LastPos(s1, s) - Определяет позицию последнего вхождения подстроки s1 в строке s. Если не найдена — возвращает 0
PosEx(s1,s,from) - Определяет позицию подстроки s1 в строке s, начиная с позиции from. Если не найдена — возвращает 0
LowCase(c) - Преобразует один символ (букву) в строчную букву
LowerCase(s) - Преобразует все символы (буквы) строки в строчные буквы
UpCase(с) - Преобразует один символ (букву) в заглавную букву
UpperCase(s) - Преобразует все символы (буквы) строки в заглавные буквы
Написать программу, которая вводит слово, а затем выводит его по одному символу в строке.
Программа:
uses GraphABC;
var
s: string; n: integer;
begin
writeln('Введи слово');
readln(s); writeln(s);
n := length(s);
for var i := 1 to n do writeln(s[i]);
end.
Тестирование:
Написать программу, которая выводит на экран последний символ введенного слова и определяет, встречается ли этот символ в слове еще раз. Если встречается, то программа выводит индекс символа.
Программа:
var
s: string;
n, k: integer;
begin
writeln('Введи слово');
readln(s);n := length(s);
writeln('Последний символ - ',
s[n]);
k := pos(s[n], s);
if k = n then writeln('Символ один')
else writeln('Символ с индексом ', k)
end.
Тестирование. Результаты:
Copy(s,index,count) - Функция копирует часть строки s в другую строку
Delete(s,index,count) - Процедура удаляет символы строки s
Insert(s1,s,index) - Процедура вставляет подстроку s1 в строку s
Написать программу, которая определит, сколько раз заданная подстрока встречается в строке.
Программа:
var
s, p, t: string;
n1, n2, k: integer;
begin
writeln('Cтрока s');readln(s);
writeln('Подстрока p');readln(p);
n1 := length(s);
n2 := length(p);
k := 0;
for var i := 1 to n1 - n2 + 1 do
begin
t := copy(s, i, n2);
if t = p then k := k + 1;
end;
writeln('Встречается ', k, ' раз(-а)');
end.
Тестирование.
Запустить программу, ввести строку «Не слово хозяин хозяину, а хозяин слову хозяин» и подстроку «хозяин».
Результат:
Написать программу, которая из слова ТЕСТИРОВАНИЕ получит слово РИСОВАНИЕ, используя процедуры и функции преобразования строк.
Программа:
const s = 'ТЕСТИРОВАНИЕ';
var s1: string;
begin
s1 := s[6]; s1 := s1 + copy(s,5,8); //РИРОВАНИЕ
delete(s1, 3, 1); //РИОВАНИЕ
insert(s[3], s1, 3); //РИСОВАНИЕ
writeln('Слово =', s1);
end.
Тестирование.
а) Подсчёт символа в строке.
var
s: string;
c: char;
k: integer;
begin
writeln('Введите строку');
readln(s);
writeln('Введите символ');
readln(c);
k := 0;
for var i := 1 to length(s) do
if s[i] = c then k := k + 1;
writeln('Количество=', k);
end.
б) Удаление символов строки.
var
s: string;
k: integer;
begin
writeln('Введите строку');
readln(s);
while pos('а', s) <> 0 do
begin
k := pos('а', s);
delete(s, k, 1);
end;
writeln('Результат:', s);
end.
в) Замена символов строки.
var s: string;
begin
writeln('Введите строку');
readln(s);
for var i:=1 to length(s) do
if s[i]='a' then s[i]:='o';
writeln('Результат:', s);
end.
г) Вставка символов в строку.
var s, t: string;
begin
writeln('Введите строку');
readln(s);
t:='';
for var i:=1 to length(s) do
t:=t+s[i]+' ';
writeln('Результат:', t);
end.
Проверьте свои знания ➠
1. Для примера 8.3
В программу внесли следующие изменения:
for var i := 1 to n do
begin
write(s[i]);
if i mod 2 = 0 then writeln;
end;
Как теперь выводится слово? Объясните почему.
Ответ запишите в комментариях к программе. Например:// Слово выводиться ..., потому что ...2. Измените программу так, как указано ниже.
Каждая буква должна выводиться своим цветом (можно использовать случайное задание цветов).
Буквы, стоящие на четных местах, должны выводиться одним цветом, а на нечетных — другим.
2. Для примера 8.4
1. Измените программу так, чтобы на экран выводился символ введенного слова, стоящий посередине (для слов с четным количеством букв — символ справа от середины).
Проверьте правильность работы своей программы на предложенных примерах.
Школа - о
гимназия - а
Запишите в комментариях к программе два своих примера.
Что будет выведено, если ничего не вводить, просто нажать Enter?
Проверьте, встречается ли выведенный символ в слове еще раз.
Выведите позиции всех символов, совпадающих с символом слова, находящимся посередине.
2. Измените программу из примера 8.4 так, чтобы строчные и заглавные буквы анализировались программой одинаково (например, для слова «Анна» ответ должен быть следующим: «Последний символ — а, символ встретился на месте 1»).
3. Для примера 8.8
1. Скопируйте программу из примера 8.8 и расставьте комментарии.
// копируем часть строки во временную переменную// выводим результат работы программы// ввод строки, в которой ищем// описание строк// начало цикла для поиска подстроки в строке// определяем количество букв в подстроке // ввод подстроки (что мы ищем)// проверяем совпадение выделенного фрагмента с искомой подстрокой и увеличиваем значение счетчика// определяем количество букв в строке2. Измените программу из примера 8.8 так, чтобы при k = 0 выводилось сообщение 'Подстрока в строке не встречается'.
3. Программу из примера 8.8 записали следующим образом:
var s, p, t: string;
k, i: integer;
begin
writeln('Строка s');
readln(s);
writeln('Подстрока p');
readln(p);
k := 0; i := 1;
while PosEx(p, s, i) <> 0 do
begin
i := PosEx(p, s, i) + 1; k := k + 1;
end;
writeln('Встречается', k, 'раз(-а)');
end.
Сравните эту программу и программу из примера 8.8, определив, сколько раз выполнится команда цикла в каждой из программ для перечисленных случаев. Ответы запишите в комментариях к программе.
Строка s := «Не слово хозяин хозяину, а хозяин слову хозяин», подстрока p := «хозяин».
Строка s := «Не слово хозяин хозяину, а хозяин слову хозяин», подстрока p := «хозяйка».
*Можно ли подобрать тест, для которого количество выполнений цикла будет одинаковым для обеих программ? Если да, то какой?
4. Для примера 8.9
Получите из слова «ТЕСТИРОВАНИЕ» указанные слова. Для этого используйте команды: copy, delete, insert и операцию сложения строк.
РОСТ.
ТОВАР.
ОТВЕРСТИЕ.
НИВА.
ТОСТЕР.
Придумайте свое слово.
5. Составьте программы для решения задач
1. С клавиатуры вводится слово. Составьте программу, определяющую, верно ли, что слово начинается и заканчивается на одну и туже букву.
2. С клавиатуры вводится строка. Составьте программу, которая выводит знак тире после каждого символа.
Входные данные Выходные данные
школа ш-к-о-л-а-
3. С клавиатуры вводится строка. Составьте программу, которая находит общее количество русских и латинских букв “а” и “A”.
Входные данные Выходные данные
Aloha – гавайское слово 4
4. С клавиатуры вводится строка. Составьте программу, которая удаляет из строки все знаки тире и пробелы.
Входные данные Выходные данные
375 – 29 – 111 – 00 -11 375291110011
5. Даны два слова. Верно ли, что одно из слов начинается на ту же букву, на которую заканчивается другое? (Первая буква одного из слов может быть заглавной.) Если да, то вывести букву, иначе — соответствующее сообщение.
Проверьте правильность работы своей программы на предложенных примерах.
Входные данные Выходные данные
array yellow y
apple auto неверно
Рыба Арбуз а
Придумайте два своих теста. Запишите в конце программы в виде комментарий.
Добавьте в вашу программу возможность при ответе «верно», указать, принадлежат ли буквы одному регистру.