Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_pas#9'11.doc
Скачиваний:
12
Добавлен:
16.07.2019
Размер:
101 Кб
Скачать
☆

Примеры для выполнения лабораторной работы

Пример 1. Написать программу, которая читает строку, составленную из английских букв, пробелов и символов пунктуации, и отвечает на вопрос, является ли строка палиндромом. Палиндром – это текст, одинаково читающееся в обоих направлениях. При этом

  1. предварительно символы строки преобразовать к нижнему регистру;

  2. расстановка пробелов и символов пунктуации не обязательно должна быть симметричной;

  3. не обязательно, чтобы строка была осмысленным словом или выражением.

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 символов. Каждый символ строки может быть малой английской буквой, цифрой или одним из знаков + (плюс), - (минус), * (звездочка). Группой букв будет

называться такая совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определяется группа знаков и группа цифр.

Требуется написать программу, которая находит и печатает самую длинную группу букв. Если в строке имеется несколько групп букв с наибольшей длиной, то найти первую по порядку. Если в строке нет ни одной группы

букв, то напечатать сообщение: "В строке нет ни одной группы букв". Исходная строка вводится с клавиатуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]