作者saka12 (saka)
看板Perl
标题Re: [问题] 如何取出字串中的数字并加以运算
时间Thu Feb 2 09:32:09 2012
※ 引述《saka12 (saka)》之铭言:
: ※ 引述《cutecpu (可爱中央处理器)》之铭言:
: : 以下是土法炼钢法,没有用到阵列跟正规表示式唷:
: : #!/usr/bin/perl -w
$partialSum = 0;
$sum = 0;
: : $partialSum = $sum = 0;
: : $expr = <STDIN>;
: : for(split('',$expr)){
: : if($_ ge '0' and $_ le '9'){
: : $partialSum = 10 * $partialSum + $_;
: : $digit = 1;
: : }
: : elsif($digit){
if($partialSum >= 1 and $partialSum <= 30) {
: : $exp .= "$partialSum+";
: : $sum += $partialSum;
}
: : $partialSum = $digit = 0;
: : }
: : }
: : chop($exp);
if ($sum gt "0") {
: : print "$exp=$sum\n";}
elsif { print "无效运算"}
: 首先先谢谢大家的帮忙,小弟我致上万分感激!
: 其实我後来也有想过要用10*1+2的方法来解决12会被拆成1跟2的问题,
: 无奈小弟我实在太弱,写不出来orz
: 我还有一个问题,如果限制使用者只能输入1~30的数字,之後的数字将不被运算的话,
: 该怎麽做了?
: 如果使用者只输入字母,那我要如何print出"无效运算"呢?
: 例如:
: 1 2 12 a 15 b 31 -> 1+2+12+15=30
: a b c d -> 无效运算
: 先再次谢谢大家的帮忙!
: 我会先用2-3天的时间来想想的,再回头看看大家的idea的
: (没办法,我是新手,要多翻书,才得灵感)
大家好:
我把function直接回在cutecpuf前辈的code里了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.130.53.186
※ 编辑: saka12 来自: 24.130.53.186 (02/02 09:35)