Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная работа 2 вариант 4

.docx
Скачиваний:
12
Добавлен:
01.04.2014
Размер:
23.05 Кб
Скачать

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра программного обеспечения информационных технологий

Факультет ЗВиДО

Специальность ПОИТ

Лабораторная работа № 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