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

ИПР2 часть 1, вариант 11

.doc
Скачиваний:
11
Добавлен:
01.04.2014
Размер:
54.78 Кб
Скачать

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

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

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

  

  

 

Факультет ФНиДО

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

  

 

Лабораторная работа № 2

по дисциплине «Основы алгоритмизации и программирования»

часть 1

Вариант № 11

 

  

Выполнила:

 

  

 

Минск 2012

1). Задание

Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2:

S1 – Напечатать слова, отличные от последнего слова, если в них есть повторяющиеся буквы.

S2 - Напечатать слова, отличные от последнего слова, удалив из них все последующие вхождения первой буквы.

2). Программа на языке Pascal

Program IPR2;

Uses crt;

Var

S,S1,S2,word,Sposl:string;

i,k1,k2,j,n,n1,n2: integer;

lenW: byte;

Begin

clrscr;

Writeln('Введите предложение S:');

readln(S);

writeln;

S1:='';

S2:='';

{Удалим однобуквенные слова}

For i:=1 to length(S) do

begin

if ((i=1) or (S[i-1]=' ')) and (S[i+1]=' ') then

delete (S,i,1)

else

if (i=length(s)) and (S[i-1]=' ') then

delete (S,i,1)

end;

{Удалим лишние пробелы}

i:=1;

repeat

begin

if copy(S,i,2)=' ' then

delete(S,i,1)

else

inc(i)

end

until i>=length(S);

{Добавим в конец пробел, если его нету}

i:=length(S);

if S[i]=' ' then

delete(S,i,1);

{Находим последнее слово}

i:=length(S);

Sposl:='';

while (i>0) and (S[i]<>' ') do

begin

Sposl:=S[i]+Sposl;

dec(i)

end;

{Находим слова в строке S}

i:=1;

n1:=0;

n2:=0;

S:=S+' ';

while i<length(S) do

begin

word:='';

while S[i]<>' ' do

begin

word:=word+S[i];

inc(i)

end;

i:=i+1;

{Проверим условие, явл-ся ли найденное слово отличным от последнего}

If Word<>Sposl then

begin

inc(n2); {Считаем кол-во слов в строке S2}

lenW:=length(Word);

{Проверим условие, есть ли повторяющиеся буквы}

n:=0;

for k1:=1 to lenW do

for j:=1 to lenW do

begin

if j>k1 then

if copy(Word,k1,1)=copy(Word,j,1) then

n:=n+1

end;

if n>0 then

begin

inc(n1); {Считаем кол-во слов в строке S1}

if S1 <> '' then S1:=S1+' ';

S1:=S1+Word;

end;

{Удалим последующее включение 1-ой буквы}

k2:=2;

while k2<=length(Word) do

begin

if copy(Word,1,1)=copy(Word,k2,1) then

delete(Word,k2,1)

else inc(k2)

end;

if S2 <> '' then S2:=S2+' ';

S2:=S2+Word;

end

end;

if n1>0 then

begin

writeln('Строка 1:');

writeln(S1)

end

else

writeln('Строка S1 является пустой');

if n2>0 then

begin

writeln('Cтрока 2:');

writeln(S2)

end

else

writeln('Строка S2 является пустой');

readln

end.

3). Тестовый набор данных