Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2011, 22:00   #1
juliajuliajulia
 
Аватар для juliajuliajulia
 
Регистрация: 02.09.2011
Сообщений: 4
Восклицание задание по CGI

Ребят,помогите,кто чем может...
препод дал задание по cgi,я вроде сделала(не без помощи компитентных лиц),все вроде работает,но есть одна загвоздка....вбщем все по порядку..

задание,данное преподом:
Задана строка символов. Можно ли разделить строку на три части,так
чтобы из них можно было составить палиндром?
Палиндром-строка,которая пишется одинаково справа налево и слева
направо.
Написать программу,которая запрашивает строку и печатает части,на
которые предлагается делить (каждую часть своим цветом) и с
новой строки один из возможных палиндромов.
Пример (в условных обозначениях).
Строка: АЛАШШ
<red>Ш</red><green>Ш</green><blue>АЛА</blue>
ШАЛАШ

вот что получилось: http://ulm.uni.udm.ru/~justjuliya/cgi-bin/lab2.cgi

работает с любыми словами.
но препод хитр и находчив.
он ввел полиндром ,состоящий из пробела,знакаплюс и пробела,тоесть " + "
и возникает мол "Строк,на которые рвзбивается, должно быть хотя бы две"
я ему мол чоза дела,как пробел то окрасить?

вбщем то и у меня к вам тот же вопрос.что мне надо добавить в код,чтобы с пробелами не было проблем,м? задание с того года хвостом в семестр этот перетащилось.

кстати,вот и код,гляньте,пожалуйста:
Код:
#!/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)."&nbsp;&nbsp;&nbsp;<font color=green>".check($p2)."&nbsp;&nbsp;&nbsp;<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;
}
juliajuliajulia вне форума Ответить с цитированием
Старый 05.09.2011, 12:04   #2
juliajuliajulia
 
Аватар для juliajuliajulia
 
Регистрация: 02.09.2011
Сообщений: 4
По умолчанию

ну хоть кто-нибуууудь,откликнитесь
juliajuliajulia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форум на CGI Артэс PHP 13 18.02.2011 16:43
Проектирование CGI PavluxaF Работа с сетью в Delphi 2 07.05.2009 01:17
Выполнение CGI prizrak1390 Работа с сетью в Delphi 10 23.02.2009 21:01
CGI аким Работа с сетью в Delphi 0 08.10.2008 11:35
CGI Pedro Работа с сетью в Delphi 0 17.11.2007 20:31