Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_работа_2_экон_осень_2012_2.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
99.33 Кб
Скачать

I, {номер обрабатываемого символа }

kol_sl, { количество слов в строке,

оно же – порядковый номер }

dl_sl {длина очередного слова}

: integer;

st, {исходная строка }

wrd, {текущее слово }

Inv_wrd {инвертированное слово }

: string;

begin

razd:=[' ',',','.',':','!'];

writeln(‘Введите строку для обработки ’);

Readln (st);

i:=1; { обработка начинается с первого символа строки}

kol_sl:=0; {до обработки строки количество слов = 0 }

while ( i<=length(st)) do {обеспечение перебора всех

символов строки }

begin

dl_sl:=0; {длина текущего слова}

wrd := ‘’; { нач. значение – пустая строка}

inv_wrd := ‘’; beg_w:=i;{запом }

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

while (i<=length(st)) and (not (st[i] in razd)) do

begin

dl_sl:= dl_sl+1;

wrd := wrd + st[ i ]; {формирование текущего

слова из букв}

inv_wrd := st [ i ] + inv_wrd; {формирование

инвертированного

слова из букв,

буква «приклеивается»

слева}

i:=i+1; {переход к очередному символу строки }

end;

if dl_sl > 0

then begin

kol_sl:= kol_sl+1;

if wrd = inv_wrd

then begin { найден палиндром }

writeln(‘найден палиндром ’, wrd,

его порядковый номер = ‘,kol_sl); kol_pal := kol_pal + 1; {кол-во палинд.}

end;

i:=i+1; {переход к очередному символу строки }

end;

readln;

end.

{Дана строка символов. Распечатать характеристики слова }

PROGRAM STR1;

VAR

S, WRD, INV :STRING;

DL_SL,I,KOL_SL,N_SL, KOL_PAL:INTEGER;

BEGIN

WRITELN('ВВЕДИТЕ СТРОКУ');

READLN (S);

{простейший разделитель слов - пробел }

KOL_SL:=0; { количество слов }

KOL_PAL := 0; { количество палиндромов }

I:=1; {начало обработки с первого символа строки }

{цикл перебора букв строки }

WHILE (I<=LENGTH (S)) DO {пока не конец строки }

BEGIN

WRD:=''; {инициализация поля для текущего слова }

INV:=''; {инициализация поля для инвертированного слова }

N_SL := I;{инициализация поля для начала текущего слова }

DL_SL:= 0;{инициализация поля для длины текущего слова }

{цикл перебора букв слова }

{пока не конец строки и пока символ не разделитель }

WHILE (S[I]<>' ') AND (I<=LENGTH (S)) DO

BEGIN

DL_SL:=DL_SL+1;

WRD:=WRD+S[I]; {формирование текущего слова}

INV:= S[I]+INV; {формирование инвертированного слова}

I:=I+1;

END;

IF DL_SL > 0 { было слово }

THEN begin

KOL_SL:=KOL_SL+1;

WRITELN;

WRITE (KOL_SL,' ',WRD, ' ДЛИНА= ',DL_SL,

' НАЧАЛО С БАЙТА № ',N_SL );

IF WRD = INV { слово совпадает с инвертированным }

THEN {ПАЛИНДРОМ }

BEGIN

KOL_PAL := KOL_PAL + 1;

WRITE (' ПАЛИНДРОМ ',

' № СРЕДИ ПАЛИНДРОМОВ = ',KOL_PAL);

END

ELSE WRITE ( ' НЕПАЛИНДРОМ ');

WRITELN;

END;

I:=i+1;

end;

READLN;

END.