- •Строковые константы
- •Операции над строковыми данными
- •Процедуры и функции для работы со строками
- •Примеры для выполнения лабораторной работы
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 6
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
Примеры для выполнения лабораторной работы
Пример 1. Написать программу, которая читает строку, составленную из английских букв, пробелов и символов пунктуации, и отвечает на вопрос, является ли строка палиндромом. Палиндром – это текст, одинаково читающееся в обоих направлениях. При этом
предварительно символы строки преобразовать к нижнему регистру;
расстановка пробелов и символов пунктуации не обязательно должна быть симметричной;
не обязательно, чтобы строка была осмысленным словом или выражением.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
S, Res_str, Temp, Init_str : string;
I, Len : Integer;
Ch : Char;
begin
WriteLn('Enter any string of letters: ');
ReadLn(S);
// Сохраняем исходную строку
Init_str := S;
// Заменяем заглавные буквы на строчные
for I := 1 to Length(S) do
if S[I] in ['A'..'Z'] then
S[I] := Chr(Ord(S[I]) + 32);
// Удаляем символы пунктуации и пробелы
Res_str := '';
for I := 1 to Length(S) do
if S[I] in ['a'..'z'] then
Res_str := Res_str + S[I];
// Временно сохраняем строку из строчных букв
Temp := Res_str;
// Выполняем реверс полученной строки
Len := Length(Res_str);
for I := 1 to Len div 2 do
begin
Ch := Res_str[Len + 1 - I];
Res_str[Len + 1 - I] := Res_str[I];
Res_str[I] := Ch;
end;
// Сравниваем строки и печатаем ответ
if Res_str = Temp then
WriteLn('''', Init_str, '''',' -is a palindrome!')
else
WriteLn('''', Init_str, '''',' -is not a palindrome');
Readln;
end.
Пример 2. Стандартная функция Pos обнаруживает первое появление некоторой подстроки. Создать функцию, которая возвращает N-е появление подстроки.
function PosN(Substr: string; S: string; N: Integer): Integer;
var
I, pn, SubLen: Integer;
begin
SubLen := Length(Substr);
pn := 0; // В этой переменной считаем, сколько раз уже встретили подстроку
I := 1;
// Перебираем элементы строки, пока не найдем нужное количество появлений
// подстроки или не дойдем до конца строки
while (pn < N) and (I <= Length(S)-SubLen+1) do
begin
if Substr = Copy(S, I, SubLen) then Inc(pn);
Inc(I);
end;
if pn = N then
PosN := I
else // Если подстрока встречается меньше, чем n раз, возвращаем 0
PosN := 0;
end;
Варианты заданий
ВАРИАНТ 1
Рассматривается непустая строка, содержащая не более 80 символов. Каждый символ строки может быть малой английской буквой, цифрой или одним из знаков + (плюс), - (минус), * (звездочка). Группой букв будет
называться такая совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определяется группа знаков и группа цифр.
Требуется написать программу, которая находит и печатает самую длинную группу букв. Если в строке имеется несколько групп букв с наибольшей длиной, то найти первую по порядку. Если в строке нет ни одной группы
букв, то напечатать сообщение: "В строке нет ни одной группы букв". Исходная строка вводится с клавиатуры.
