#!/usr/bin/perl
use CGI;
$q=new CGI;
$query=$q->param('string');
@let=split(/ */, $query);
$query=~ tr/ /*/;
$cnt1=1;
$succ=0;
print "Content-Type: text/html; charset=koi8-r\n\n";
if($q->param('submit')){
while ((($cnt1+$cnt2-1)<=length($query)) and ($succ==0)){
$cnt2=1;
$p1='';
$p2='';
$p3='';
while ((($cnt1+$cnt2+1)<=length($query)) and ($succ==0)){
if ($query=~ m/^(.{$cnt1})(.{$cnt2})(.*)$/){
$pal=$1.$2.$3;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$1;$p2=$2;$p3=$3;$rez=$pal;}
$pal=$2.$1.$3;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$2;$p2=$1;$p3=$3;$rez=$pal;}
$pal=$2.$3.$1;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$2;$p2=$3;$p3=$1;$rez=$pal;}
$pal=$3.$1.$2;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$3;$p2=$1;$p3=$2;$rez=$pal;}
$pal=$3.$2.$1;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$3;$p2=$2;$p3=$1;$rez=$pal;}
$pal=$1.$3.$2;
# print lo "$1 $2 $3 $cnt1 $cnt2 $pal\n";
if(palindr($pal)){$p1=$1;$p2=$3;$p3=$2;$rez=$pal; print lo "OK!\n";}
}
$cnt2=$cnt2+1;
if(!(($p1 eq '') and ($p2 eq '') and ($p3 eq ''))){$succ=1;};
if(($p1 eq '') or ($p2 eq '') or ($p3 eq '')){$succ=0;};
# print "p1=$p1;";
# print "p2=$p2;";
# print "p3=$p3;";
if (!(spal($rez))) {$succ=0;};
}
$cnt1=$cnt1+1;
}
#close(lo);
$p1=check($p1);
$p2=check($p2);
$p3=check($p3);
$query=check($query);
$rez=check($rez);
if($succ){
print '<HTML><HEAD><meta charset=koi8-r></head><body>',
$q->h4,'у‘“ѕЋЅ '.check($query).' “ЅЏ¬…„Ѕ≈‘”— ќЅ: '.'<br>'.
"<font color=red>".check($p1)." <font color=green>".check($p2)." <font color=blue>".check($p3)."</font>".
'<br><font color=black>'.
'рЅћ…ќѓ“ѕЌ: '.check($rez).
"<br></h4>",
$q->start_form,
$q->textfield('string'),$q->submit('submit'),
$q->end_form,
$q->end_html;
}
else{
print '<HTML><HEAD><meta charset=koi8-r></head><body>',
$q->h4,'у‘“ѕЋЅ '.check($query).' ќ≈ “ЅЏ¬…„Ѕ≈‘”— „ –Ѕћ…ќѓ“ѕЌ'.'<br>',
$q->start_form,
$q->textfield('string'),$q->submit('submit'),
$q->end_form,
$q->end_html;
}
}
else{
print '<HTML><HEAD><meta charset=koi8-r></head><body>',$q->start_form,
$q->h4,'дЅќЅ ”‘“ѕЋЅ ”…Ќ„ѕћѕ„.H≈ѕ¬»ѕѓ…Ќѕ “ЅЏѓ≈ћ…‘Ў ”‘“ѕЋ’ ќЅ ‘“… ёЅ”‘… ‘ЅЋ,ё‘ѕ¬ў …Џ
ќ…» Ќѕчќѕ ¬ўћѕ ”ѕ”‘Ѕ„…‘Ў –Ѕћ…ќѓ“ѕЌ.',
$q->h4,'ч„≈ѓ…‘≈ ”‘“ѕЋ’:',
$q->textfield('string'),$q->submit('submit'),$q->br,
$q->end_form,
$q->end_html;
}
sub spal{
local($pal) = @_;
local($cnt);
$cnt=0;
while (($cnt<=(int(length($pal)/2)+1)) and (substr($pal,$cnt,1) eq substr($pal,length($pal)-$cnt-1,1))) {
$cnt=$cnt+1;
}
return ($cnt>int(length($pal)/2));
}
sub palindr{
local($pal) = @_;
local($cnt);
$cnt=0;
@letter=split(/ */, $pal);
while (($cnt<=(int($#letter/2)+1)) and (@letter[$cnt] eq @letter[($#letter-$cnt)])){
$cnt=$cnt+1;
}
return ($cnt>int($#letter/2));
}
sub check{
local($me)=@_;
$me=~ tr/*/ /;
$me=~ s/>/> /g;
$me=~ s/</< /g;
$me=~ s/&/& /g;
return $me;
}
perl,cgi. помогите исправить код,пожалуйста
препод дал задание по cgi,я вроде сделала(не без помощи компитентных лиц),все вроде работает,но есть одна загвоздка....вбщем все по порядку..
______________________________________________________
[COLOR="indigo"] задание,данное преподом[/COLOR]:
Задана строка символов. Можно ли разделить строку на три части, так
чтобы из них можно было составить палиндром?
Палиндром - строка, которая пишется одинаково справа налево и слева
направо.
Написать программу, которая запрашивает строку и печатает части, на
которые предлагается делить (каждую часть своим цветом) и с
новой строки один из возможных палиндромов.
Пример (в условных обозначениях).
Строка: АЛАШШ
<red>Ш</red><green>Ш</green><blue>АЛА</blue>
ШАЛАШ
_______________________________________________________
вот что получилось: http://ulm.uni.udm.ru/~justjuliya/cgi-bin/lab2.cgi
работает с любыми словами.
но препод хитр и находчив.
он ввел полиндром ,состоящий из пробела,знакаплюс и пробела,тоесть " + "
и возникает мол "Строк, на которые рвзбивается, должно быть хотя бы две"
я ему мол чоза дела,как пробел то окрасить?:facepalm:
вбщем то и у меня к вам тот же вопрос...что мне надо добавить в код,чтобы с пробелами не было проблем,м? задание с того года хвостом в семестр этот перетащилось...
кстати,вот и код,гляньте,пожалуйста:
Код: