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

информатика ЗКМЗКЕ_1курс / Работа_со_строкой_осень_2011

.doc
Скачиваний:
17
Добавлен:
05.06.2015
Размер:
34.3 Кб
Скачать

Program Strings_main;

var

razd:set of char;

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

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

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

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

: integer;

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

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

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

: string;

begin

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

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

Readln (st);

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

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

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

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

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

begin

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

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

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

beg_wrd:=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;

{действия с очередным словом }

каждом слове известно:

порядковый номер в строке kol_sl,

длина слова dl_sl,

номер байта начала слова в строке beg_wrd ,

палиндром или нет wrd = inv_wrd ? }

if wrd = inv_wrd

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

kol_pal := kol_pal + 1; {кол-во палинд.}

{действия с очередным палиндромом }

end;

end;

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

end; {конец цикла перебора символов строки}

{вывод результатов работы со строкой}

readln;

end.