bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [157]
АВС [6]
КПиЯП [80]
ОАиП [305]
ОКТ [79]
СиСПО [8]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОАиП

ПОИТ (д.), ОАиП, Лабораторная работа №2, вар.3, 2015
Подробности о скачивании 23.11.2015, 00:06
1). Задание
Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 (п. 1, п. 2). Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение.
п. 1. Напечатать слова, отличные от последнего слова, которые симмет-ричны.
п.2. Напечатать все слова, отличные от последнего слова, заменив первое вхождение x на ks, если такое есть.

2).Текст программы на языке Pascal
Program Ex2;
Uses Crt; {Подключение модуля Crt}
Type
stroka = array of string;
Var
slova, otl: stroka;
S, S1, S2, w, v, S2x, S2ks: String;
n, k, l, i, sl, t, j, z: byte; {Вспомогательные переменные}
BEGIN
ClrScr; {очистка текущего окна на экране}
Writeln ('Введите строку, состоящую из латинских букв');
Readln (S); {Ввод строки S}
n := Length (S); {Вычисление длины строки S}
k := 0; {Обнуление количества слов в строке S}
l := 0; {Обнуление длины слова}
For i := 1 to n do {Цикл с параметром для поиска отдельных слов в строке S}
If S[i] = ' ' then
Begin
if l > 0 then
begin
SetLength (slova,(k+1)); {Выделение места в динамическом массиве для очередного слова}
sl := (i-l); {Определение позиции строки S, с которой начинается очередное слово}
slova [k] := Copy (S, sl, l); {Копирование слова из строки в массив}
L := 0; {Обнуление длины слова}
inc (k); {Увеличение счетчика слов}
end;
End
else inc (l); {Увеличение длины слова} {Выход из цикла с параметром при i = n+1}
If l > 0 then {Определение последнего слова, если строка не заканчивается пробелом}
Begin
SetLength (slova,(k+1)); {Выделение места в динамическом массиве для по-следнего слова}
sl := (i-l+1); {Определение позиции строки S, с которой начинается последнее слово}
slova [k] := Copy (S, sl, l); {Копирование последнего слова из строки в мас-сив}
inc (k); {Увеличение счетчика слов}
End;
If k = 0 then writeln ('В веденной Вами строке нет слов')
else
Begin
{Определение слов отличных от последнего}
t := 0; {Обнуление количества отличных слов}
For i := 0 to (k-1) do {Цикл с параметром для поиска слов отличных от последнего}
If slova [i] <> slova [k-1] then {Сравнение каждого слова с последним}
Begin
SetLength (otl,(t+1)); {Выделение места в динамическом массиве для очередного отличного слова}
otl [t] := slova [i]; {Заполнение массива отличными словами}
inc (t); {Увеличение счетчика слов}
End; {Выход из цикла с параметром при i = k}
If t = 0 then writeln ('В веденной Вами строке нет слов отличных от последнего')
else
Begin
{Определение симметричных слов}
For i := 0 to (t-1) do {Цикл с параметром для поиска симметричных слов}
Begin
w := otl[i]; {Выделение отдельного слова из массива}
For j := Length (w) downto 1 do {Слово записывается в обратном по-рядке}
v := v + w[j];
If w = v then {Сравнение прямого и обратного слов}
S1 := S1 + ' ' + w; {Формирование строки S1}
Delete(v, 1, Length (v)); {Удаление обратного слова}
End; {Выход из цикла с параметром при i = t}
If Length (S1) = 0 then {определение длины строки S1}
writeln ('В веденной Вами строке нет симметричных слов отличных от последнего.')
else writeln ('S1:', S1); {Вывод строки S1}
{Определение первого вхождения 'x' в словах}
S2x := 'x';
S2ks := 'ks';
For i := 0 to (t-1) do {Цикл с параметром для поиска первого вхождения 'x' в словах}
Begin
w := otl[i]; {Выделение отдельного слова из массива}
z := Pos(S2x, w); {Поиск первого вхождения 'x' в слове}
If z > 0 then {Определения в слове наличия буквы 'x'}
Begin {Замена в слове первого 'x' на 'ks'}
Delete (w,z,1); {Удаление из слова первого вхождения 'x'}
Insert (S2ks,w,z); {Добавление в строку 'ks' на место 'x'}
End;
S2 := S2 + ' ' + w; {Формирование строки S2}
End; {Выход из цикла с параметром при i = t}
Writeln ('S2:', S2); {Вывод строки S2}
End;
End;
ReadKey
END.

3). Результаты работы программы
Вх. – входные данные (строка S);
Вых. – выходные данные.

Вх.: «anna xeniya i azaza sdelali zakaz»
Вых.: «S1: anna i azaza»
«S2: anna kseniya i azaza sdelali»

Вх.: « mnogo mango ela anna mnogo»
Вых.: «S1: anna»
«S2: mango ela anna»

Вх.: « sasha i xeniya eli mnogo mango »
Вых.: «S1: i»
«S2: sasha i kseniya eli mnogo»

Вх.: «xeniya ela mango»
Вых.: «В веденной Вами строке нет симметричных слов отличных от последнего»
«S2: kseniya ela»

Вх.: « plaxa xyuxa napisala axaxaxa axaxa »
Вых.: «S1: axaxaxa»
«S2: plaksa ksyuxa napisala aksaxaxa»
Вх.: «mnogo mango ela ada ada»
Вых.: «В веденной Вами строке нет симметричных слов отличных от последнего»
«S2: mnogo mango ela»

Вх.: «ada ada ada »
Вых.: «В веденной Вами строке нет слов отличных от последнего»

Вх.: « »
Вых.: «В веденной Вами строке нет слов»

Вх.: «»
Вых.: «В веденной Вами строке нет слов»
Категория: ОАиП | Добавил: Yulia
Просмотров: 1129 | Загрузок: 5
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]