Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что не так с моим кодом?

Arystan 135 Ученик (31), на голосовании 3 месяца назад
use 5.024; # strict enabled by default
use warnings;

my $n = <STDIN>;
my $sum = int(($n % 10) + (($n % 100) / 10) + ($n / 100));

if ($n < 0) {
my $res = $sum * (-1);
print "$res";
} else {
print "$sum";
}

код выдает 13 если вводишь 192. Однако сумма трех этих цифр 12. В чем проблема?
Голосование за лучший ответ
Николай Матвейчук Просветленный (45202) 4 месяца назад
Слишком поздно приводите типы 2 + 9.2 + 1.92 = 13.12
Вам нужно числа приводить к целым до сложения, а не после.
Arystan 135Ученик (31) 4 месяца назад
Большое спасибо. А то я не понимал почему у меня выходят дроби, поэтому приводил их к int
Владимир Ворников Профи (926) 3 месяца назад
Сделайте так:
$x+=$_ for split '', abs <STDIN>;
print $x;
Похожие вопросы