Top.Mail.Ru
Ответы

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

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. В чем проблема?

По дате
По рейтингу
Аватар пользователя
Мудрец

Слишком поздно приводите типы 2 + 9.2 + 1.92 = 13.12
Вам нужно числа приводить к целым до сложения, а не после.

Аватар пользователя
Ученик

Большое спасибо. А то я не понимал почему у меня выходят дроби, поэтому приводил их к int

Аватар пользователя
Знаток

Сделайте так:
$x+=$_ for split '', abs <STDIN>;
print $x;



Видео по теме