
- •Требования к выполнению и оформлению лабораторных работ по дисциплине «Информатика и программирование»
- •Лабораторная работа № 2
- •Москва 2012
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •If ( not (st[I] in razd))
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •Inv_wrd {инвертированное слово }
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.