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

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

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

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

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

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

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

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

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

часть 1

Вариант № 2

 

 

 

 

 

Выполнил студент:

группа

Зачетная книжка № 

 

 

 

 

 

 

 

 

Минск 2011

Задача:

Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 (п.1, п.2) заданий № 1 - 30. Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение.

 

1). Задание.

п.1. - Напечатать слово, имеющее минимальную длину и отличное от последнего слова.

п.2. - Напечатать все слова, отличные от последнего слова, удалив все вхождения th, если такие есть.

2). Текст программы.

Program er;

var

p:integer;

s,p_s,s1,s2,s3,s4:string;

n,n1,k,min:byte;

begin

readln(s);

{Делим строку на две части}

n := length(s);

while (n >= 1) and (s[n] = ' ') do dec(n); {Пропуск пробелов в конце строки}

n1 := n;

while (n >= 1) and (s[n] <> ' ') do dec(n); {Поиск пробела перед последним словом}

s3 := copy(s, 1, n); {Строка без последнего слова}

p_s := copy(s, n+1, n1-n); {Последнее слово}

writeln('Последнее слово ',p_s);

n := 1;

k := 1;

min := length(s3);

s1 := '';

s2 := '';

{Работаем только с первой частью без последнего слова}

while n <= length(s3) do begin

if s3[n] = ' ' then begin

{Нашли очередной пробел}

if n-k > 1 then begin

s4 := copy(s3, k, n-k); {Очередное слово в строке}

writeln('Следующее слово ',s4);

{Дальше решаем, что делать с этим словом}

if s4 <> p_s then begin {Отличное от последнего}

{Находим слово, имеющее минимальную длину}

if length(s4) < min then begin

s1 := s4;

min := length(s4)

end;

end;

{Удаляем}

p := pos('th', s4);

while p <> 0 do begin

delete(s4, p, 2);

p := pos('th', s4);

end;

if length(s2) > 0 then s2 := s2 + ' ';

if s4 = p_s then s4:= '';

s2 := s2+s4;

end;

k := n+1;

end;

inc(n);

end;

{Проверка на пустые строки}

if length(s1) = 0 then writeln('Пустая строка ');

writeln(s);

writeln('Слово, имеющее минимальную длину');

writeln(s1);

writeln(' Слова, отличные от последнего слова');

writeln(s2);

readln;

end.

Результаты работы программы:

word program poit goothd tie poit

Последнее слово poit

Следующее слово word

Следующее слово program

Следующее слово poit

Следующее слово goothd

Следующее слово tie

word program poit goothd tie poit

Слово, имеющее минимальную длину

tie

Слова, отличные от последнего слова

word program good tie