БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ Кафедра программного обеспечения информационных технологий
Факультет ФНиДО Специальность ПОИТ
Лабораторная работа № 1 по дисциплине «Основы алгоритмизации и программирования» часть 1 Вариант № 1
Выполнил студент: Рябченко А.И.
Минск 2013 1). Задание п.1. - Напечатать слово, имеющее максимальную длину и отличное от последнего слова. п.2. - Напечатать те слова последовательности, которые отличны от последнего слова, предварительно все вхождения abc заменив на def, если такие есть. 2). Текст программы. program LAB_2; var p:integer; s,p_s,s1,s2,s3,s4:string; n,n1,k,max:byte; begin writeln('stroka s'); 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); { последнее слово}
{ Дальше работаем только с первой частью без последнего слова} n := 1; k := 1; max := 0; s1 := ''; s2 := ''; while n <= length(s3) do begin if s3[n] = ' ' then begin { Нашли очередной пробел} if n-k > 0 then begin s4 := copy(s3, k, n-k); {Очередное слово в строке}
{ дальше решаем, что делать с этим словом} if s4 <> p_s then begin { Отличное от последнего} if length(s4) > max then begin s1 := s4; max := length(s4) end; end; { Заменяем} p := pos('abc', s4); while p <> 0 do begin delete(s4, p, 3); insert('def', s4, p); p := pos('abc', s4); end; if length(s2) > 0 then s2 := s2 + ' '; s2 := s2+s4; end; k := n+1; end; inc(n); end;
if max<>0 then writeln('s1=',s1) else writeln('stroka S1 pysta');
if length(s2)=0 then writeln('stroka S2 pysta') else writeln('s2=',s2); readln; end. 3). Тестовый набор данных. stroka s aba abc abc fhffjgfjg djf s1=fhffjgfjg s2=aba def def fhffjgfjg