Raku kurss / Pielikums 🆕 / Viss kopā / Jaukti miniprojekti / Exercises / Apgrieztā poļu pieraksta kalkulators
Risinājums: Apgrieztā poļu pieraksta kalkulators
Šeit ir iespējams risinājums uzdevumam.
Kods
my $expression = '3 4 + 5 *';
my @stack;
for $expression.words -> $token {
if $token ~~ / ^ \d+ $ / {
@stack.push($token.Int);
}
else {
my $b = @stack.pop;
my $a = @stack.pop;
@stack.push( do given $token {
when '+' { $a + $b }
when '-' { $a - $b }
when '*' { $a * $b }
when '/' { $a / $b }
});
}
}
say @stack[0];🦋 Atrodiet programmu failā rpn-calculator.raku.
Izvade
35Komentāri
Skaitļi tiek likti stekā. Operators izņem abas jaunākās vērtības, tās apvieno un rezultātu ieliek atpakaļ — tāda ir postfiksās aprēķināšanas būtība.
do given $tokenoperatoru pārvērš pareizajā aritmētikā, un secība — vispirms$a, tad$b(izņemti apgrieztā kārtībā) — atņemšanu un dalīšanu patur pareizajā virzienā.
Kursa navigācija
← Apgrieztā poļu pieraksta kalkulators | Teksta histogramma →