Контрольная работа 2 вариант 4
.docxБЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ЗВиДО
Специальность ПОИТ
Лабораторная работа № 2
по дисциплине «Основы алгоритмизации и программирования»
часть 1
Вариант № 4
Выполнил: Куриленко А.Е.
Минск 2012
1. Задание
Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 (п.1, п.2). Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение.
п.1. - Напечатать все слова, отличные от последнего слова, которые начинаются и оканчиваются одной буквой.
п.2. - Напечатать все слова, отличные от последнего слова, удалив первое вхождение w, если такое есть (образовавшуюся “дыру” заполнить последующими буквами, а в конец добавить пробел).
2. Программа на языке Pascal
{Преобразовать исходную строку в строки S1 и S2, согласно условию задачи.
Разработчик - Куриленко А.Е. 04.06.2012г.}
Program stroka;
{Описания}
uses crt;
var
st, st1, st2, st3:string;
i, k, m, n, n1, p, l:integer;
{Вычисления}
Begin
ClrScr;
{Чтение исходных данных}
writeln('Введите слова, раздленные пробелами');
readln(st);
writeln;
for i:=length(st) downto 1 do {Цикл для удаления пробелов}
begin
if st[i]=' ' then
else
break; {Выход из цикла если не пробел}
end;
for l:=i downto 1 do {Цикл для нахождения позиции начала последнего слова}
if st[l]=' ' then
begin
k:=l;
m:=l;
break;
end;
st1:='';
for k:=k+1 to i do {Цикл для записи последнего слова}
begin
st1:=st1+st[k]; {Запись слова st1}
end;
i:=1; {установление значения i в начальное положение}
while i<m do {Цикл для прохождения по строке, до начала последнего слова}
begin
if st[i]<>' ' then
begin
st2:='';
while st[i]<>' ' do {Цикл для определения слов в строке}
begin
st2:=st2+st[i]; {Запись слова st2}
i:=i+1;
end;
{Проверка условий, когда в слове st2 первая и последняя буква равны,
и слово st2 отличное от последнего слова st1}
if (st2[1]=st2[length(st2)]) and (st2<>st1) then
begin
n:=1;
write(st2, ' '); {Вывод слов st2 удовлетворяющих условиям}
end;
end
else
i:=i+1;
end;
if n=0 then
write('Нет слов удовлетворяющих условию п.1');
writeln;
i:=1;
while i<m do {Цикл для прохождения по строке, до начала последнего слова}
begin
if st[i]<>' ' then
begin
st3:='';
while st[i]<>' ' do {Цикл для определения слов в строке}
begin
st3:=st3+st[i];
i:=i+1;
end;
{Проверка условия, данное слово st3 отличное от последнего слова st1}
if st3<>st1 then
begin
n1:=1;
p:=pos('w',st3); {Определение позиции первой буквы 'w' в слове st3}
if p>0 then
begin
delete(st3,p,1); {Удаление первой буквы 'w' в слове st3}
write(st3, ' ');
end
else
write(st3, ' '); {Вывод слов st3}
end;
end
else
i:=i+1;
end;
if n1=0 then
write('Нет слов, удовлетворяющих условию п.2');
readln;
end.
3. Результаты работы программы.
Входные данные: privet kwak tut dwd dwt kwak
Результаты работы программы:
tut dwd
privet tut dd dt