Ñîçäàäèì ïðîãðàììó, îïðåäåëÿþùóþ, ÿâëÿåòñÿ ëè ââåäåííîå ñëîâî ïåðåâåðòûøåì. Ïåðåâåðòûøåì íàçûâàåòñÿ ñëîâî, êîòîðîå îäèíàêîâî ÷èòàåòñÿ êàê ñëåâà íàïðàâî, òàê è ñïðàâà íàëåâî, íàïðèìåð: øàëàø, êàçàê. Êàê âèäíî èç îïðåäåëåíèÿ, äëÿ âûÿñíåíèÿ, ÿâëÿåòñÿ ëè ñëîâî ïåðåâåðòûøåì, íåîáõîäèìî ñðàâíèâàòü 1-é è ïîñëåäíèé ñèìâîë â ñòðîêå, 2-é è ïðåäïîñëåäíèé, 3-é è ïðåäïðåäïîñëåäíèé ñèìâîë, è ò. ä. äî ñåðåäèíû ñëîâà. Åñëè â ïðîöåññå ñðàâíåíèÿ áóäåò óñòàíîâëåíî îòëè÷èå ñðàâíèâàåìûõ ñèìâîëîâ, ò. å. âûÿñíÿåòñÿ, ÷òî ñëîâî ÷èòàåòñÿ ñëåâà íàïðàâî èíà÷å, ÷åì ñïðàâà íàëåâî, çíà÷èò ìîæíî ñäåëàòü âûâîä, ÷òî ýòî ñëîâî íå ÿâëÿåòñÿ ïåðåâåðòûøåì. Åñëè â ïðîöåññå ñðàâíåíèÿ íå áóäåò âûÿâëåíî îòëè÷èÿ ñðàâíèâàåìûõ ñèìâîëîâ, çíà÷èò ýòî ñëîâî – ïåðåâåðòûø.
Ââåäåì ñëåäóþùèå ïåðåìåííûå: äëÿ õðàíåíèÿ ñëîâ – Word òèïà string ñ ìàêñèìàëüíûì ðàçìåðîì ñëîâ 30 ñèìâîëîâ è ïåðåìåííóþ I öåëîãî òèïà, óêàçûâàþùóþ íîìåð ïîçèöèè ñðàâíèâàåìîãî ñèìâîëà îò íà÷àëà ñòðîêè. Çàãîëîâîê ïðîãðàììû ìîæíî áóäåò çàïèñàòü ñëåäóþùèì îáðàçîì:
program Perev_Word:
var I : byte:
Word : string[30];
Ïðåæäå âñåãî, ïðîãðàììà äîëæíà âûâîäèòü ñîîáùåíèå î ââîäå ñòðîêè è ñ÷èòûâàòü çíà÷åíèå ñòðîêè â ïåðåìåííóþ Word. Ýòî ìîæíî çàïèñàòü ñëåäóþùèì îáðàçîì:
Write('Ââåäèòå ñëîâî ');
Readln(Word):
Ïîâòîðÿþùóþñÿ îïåðàöèþ ñðàâíåíèÿ ïåðâîãî è ïîñëåäíåãî ñèìâîëà â ñòðîêå, çàòåì âòîðîãî è ïðåäïîñëåäíåãî è ò. ä., çàïèøåì ñ ïîìîùüþ öèêëà for, ïàðàìåòð êîòîðîãî, èçìåíÿÿñü îò 1 äî ñåðåäèíû ñòðîêè, áóäåò óêàçûâàòü íîìåð ïîçèöèè ñèìâîëà îò íà÷àëà ñòðîêè. Êîíå÷íîå çíà÷åíèå ïàðàìåòðà öèêëà óñòàíîâèì ðàâíûì ñåðåäèíå ñëîâà, öåëî÷èñëåííîå çíà÷åíèå êîòîðîãî âû÷èñëèì, èñïîëüçóÿ ñòàíäàðòíûå ôóíêöèè Trunc è Length. Çàãîëîâîê îïåðàòîðà öèêëà çàïèøåì ñëåäóþùèì îáðàçîì:
for I:=l to Trunc(Length(Word)/2) do
 òåëå öèêëà çàïèøåì îïåðàòîð ñðàâíåíèÿ ñîîòâåòñòâóþùèõ ñèìâîëîâ:
if Word[I]<>Word[Length(Word)-I+l].
Åñëè ðåçóëüòàò ñðàâíåíèÿ ñîîòâåòñòâóþùèõ î÷åðåäíûõ ñèìâîëîâ ïðèìåò çíà÷åíèå True, òî äàííàÿ ñòðîêà íå ÿâëÿåòñÿ ïåðåâåðòûøåì, è äàëüíåéøåå ñðàâíåíèå íå èìååò ñìûñëà. Âûâåäåì íà ýêðàí ñîîáùåíèå, ÷òî äàííîå ñëîâî íå ÿâëÿåòñÿ ïåðåâåðòûøåì, è çàâåðøèì öèêë ïðîöåäóðîé exit, êîòîðàÿ ïåðåäàåò óïðàâëåíèå â êîíåö ïðîãðàììû.
Åñëè ðåçóëüòàò ñðàâíåíèÿ ñîîòâåòñòâóþùèõ î÷åðåäíûõ ñèìâîëîâ èìååò çíà÷åíèå False, òî ýòî ñâèäåòåëüñòâóåò î òîì, ÷òî äàííûå ñèìâîëû îäèíàêîâû, íî ñëåäóåò ïðîäîëæèòü ñðàâíåíèå îñòàâøèõñÿ. Ïàðàìåòð öèêëà óâåëè÷èâàåòñÿ íà 1, ïðîâåðÿåòñÿ óñëîâèå I <=Trunc(Length(Word)/2) è åñëè îíî ñîáëþäàåòñÿ, òî òåëî öèêëà âûïîëíÿåòñÿ åùå ðàç.
Åñëè óñëîâèå I <=Trunc(Length(Word)/2) íå âûïîëíÿåòñÿ, òî öèêë çàâåðøàåòñÿ, è óïðàâëåíèå ïåðåäàåòñÿ íà îïåðàòîð Writeln('Ïåðåâåðòûø'). Ïðîãðàììà çàâåðøàåò ðàáîòó. Ïîëíûé òåêñò ïðîãðàììû ìîæíî ïðåäñòàâèòü òàêèì îáðàçîì:
program Perev_Word; {ßâëÿåòñÿ ëè ââåäåííîå ñëîâî ïåðåâåðòûøåì?}
var I : byte;
Word : string[30];
begin
Write('Ââåäèòå ñëîâî ');
Readln(Word);
for I:=l to Trunc(Length(Word)/2) do {Ïðîâåðÿåì ñèìâîëû ïîî÷åðåäíî îò íà÷àëà äî ñåðåäèíû ñëîâà}
begin
if Word[I]<>Word[Length(Word)-I+l] then {Åñëè ñîîòâåòñòâóþùèå ñèìâîëû íå îäèíàêîâû} begin Writeln Ñ Íåïåðåâåðòûø');
exit {Âûõîä èç öèêëà è çàâåðøåíèå ïðîãðàììû, äàëüøå íå èìååò ñìûñëà ñðàâíèâàòü }
end;
end;
Writeln ('Ïåðåâåðòûø');
end.
Çàïóñòèòå èíòåãðèðîâàííóþ ñðåäó ïðîãðàììèðîâàíèÿ. Ââåäèòå òåêñò ïðîãðàììû Perev_Word è çàïèøèòå ôàéë íà äèñê ïîä ñîîòâåòñòâóþùèì èìåíåì, à çàòåì îòêîìïèëèðóéòå åãî. Ïîñëå óñïåøíîãî çàâåðøåíèÿ êîìïèëÿöèè ïðîâåðüòå ðàáîòó ïðîãðàììû ñ îòëàäêîé â ïîøàãîâîì ðåæèìå, îòñëåæèâàÿ çíà÷åíèÿ ïåðåìåííûõ Word, I, Word[I], Word[length(Word)-I+l].
|