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

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

Arystan 135 Ученик (37), на голосовании 4 месяца назад
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. В чем проблема?
Голосование за лучший ответ
Николай Матвейчук Просветленный (45436) 5 месяцев назад
Слишком поздно приводите типы 2 + 9.2 + 1.92 = 13.12
Вам нужно числа приводить к целым до сложения, а не после.
Arystan 135Ученик (37) 5 месяцев назад
Большое спасибо. А то я не понимал почему у меня выходят дроби, поэтому приводил их к int
Владимир Ворников Профи (929) 4 месяца назад
Сделайте так:
$x+=$_ for split '', abs <STDIN>;
print $x;
Похожие вопросы