Resistance calculator: Difference between revisions

Content added Content deleted
m (ChristerNilsson moved page Parallel Resistor Calculator to Resistance Calculator)
(→‎{{header|Perl 6}}: Changed accessors to public)
Line 399: Line 399:


method res ( ) {
method res ( ) {
given $!symbol {
given $.symbol {
when '+' { return $!a.res + $!b.res }
when '+' { return $.a.res + $.b.res }
when '*' { return 1 / (1 / $!a.res + 1 / $!b.res) }
when '*' { return 1 / (1 / $.a.res + 1 / $.b.res) }
default { return $!resistance }
default { return $.resistance }
}
}
}
}


method set-voltage ( Numeric $voltage ) {
method set-voltage ( Numeric $voltage ) {
given $!symbol {
given $.symbol {
when '+' {
when '+' {
my $ra = $!a.res;
my $ra = $.a.res;
my $rb = $!b.res;
my $rb = $.b.res;
$!a.set-voltage( $ra / ($ra+$rb) * $voltage );
$.a.set-voltage( $ra / ($ra+$rb) * $voltage );
$!b.set-voltage( $rb / ($ra+$rb) * $voltage );
$.b.set-voltage( $rb / ($ra+$rb) * $voltage );
}
}
when '*' {
when '*' {
$!a.set-voltage( $voltage );
$.a.set-voltage( $voltage );
$!b.set-voltage( $voltage );
$.b.set-voltage( $voltage );
}
}
}
}
Line 426: Line 426:
method report ( Int $level = 1 ) {
method report ( Int $level = 1 ) {
my $pad = '| ' x $level;
my $pad = '| ' x $level;
my $f = ( self.res, $!voltage, self.current, self.effect ).fmt('%8.3f');
my $f = ( self.res, $.voltage, self.current, self.effect ).fmt('%8.3f');
say "$f $pad$!symbol";
say "$f $pad$.symbol";
$!a.report( $level+1 ) if $!a;
$.a.report( $level+1 ) if $.a;
$!b.report( $level+1 ) if $!b;
$.b.report( $level+1 ) if $.b;
}
}
}
}