diff options
| author | dasJake <no_mail@github.com> | 2021-11-22 20:43:56 +0100 |
|---|---|---|
| committer | dasJake <no_mail@github.com> | 2021-11-22 20:43:56 +0100 |
| commit | f4eeeed382a60317c349a65658019cf110dde1ab (patch) | |
| tree | fcbc567c95ee581f74b4b014c81ca2c653ecaae0 | |
| parent | e57e8ba97ca974deeadbd7137390e99a38d8304d (diff) | |
| download | perlweeklychallenge-club-f4eeeed382a60317c349a65658019cf110dde1ab.tar.gz perlweeklychallenge-club-f4eeeed382a60317c349a65658019cf110dde1ab.tar.bz2 perlweeklychallenge-club-f4eeeed382a60317c349a65658019cf110dde1ab.zip | |
140 BUGGY add decimal_to_binary subroutine
| -rw-r--r-- | challenge-140/jake/perl/ch-1.pl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-140/jake/perl/ch-1.pl b/challenge-140/jake/perl/ch-1.pl new file mode 100644 index 0000000000..b165ee6dcf --- /dev/null +++ b/challenge-140/jake/perl/ch-1.pl @@ -0,0 +1,40 @@ +#!/r/bin/perl +use strict; +use warnings; + +# with this script you can add 2 binary numbers and get their sum as binary number +# https://theweeklychallenge.org/blog/perl-weekly-challenge-140/#TASK1 + +# get input +print "decimal number a: "; +my $a = <STDIN>; +chomp $a; +my $power_n = 0; +my $a_binary += decimal_to_binary ( $power_n, $a ); +printf ( "binary number a: %i\n", $a_binary ); + +# convert dec to bin +sub decimal_to_binary { + my ( $power, $decimal_number ) = @_; + if ( $decimal_number == 0 ) { + return 0; + #exit; + } + elsif ( $decimal_number == 2**$power ) { + print "if\n$decimal_number\n$power\n\n"; + return 10**$power; + #exit; + } + elsif ( $decimal_number <= 2**($power+1) ) { + $power++; + decimal_to_binary ( $power, $decimal_number ); + print "elsif\n$decimal_number\n$power\n\n"; + } + else { + return 10**($power+1); + $decimal_number -= 2**($power+1); + $power = 0; + print "else\n$decimal_number\n$power\n\n"; + decimal_to_binary ( $power, $decimal_number ); + } +}
\ No newline at end of file |
