backscratcher

 

calc

Page history last edited by tom 2 yrs ago

get a copy of the script

 

#!/usr/bin/perl
# ========================================================================
# calc
#
# @(#) calculator
#
# Syntax:
#   
#   
# History:
#  97-03-06    tb    created
#
# Notes:
#
# ========================================================================
use POSIX;
while (1)
{
print( "> " );
$expr = <STDIN>;
$r[$next++] = eval( $expr );
$last = $next-1;
print( "   $r[$last] = $r[$last]n" );
}
# ========================================================================
sub x
{
my ($pct) = @_;
$t = 100 * ((time() -  1108163100) / $pct);
$t += 1108163100;
$t = int($t);
printf("%sn", strftime("%H:%M", localtime($t)));
}
# ========================================================================
sub mdiff
{
local($start,$end) = @_;
local($result);
$result = 1 + ($end - $start) / $start;
return( $result );
}
# ========================================================================
sub pdiff
{
local($start,$end) = @_;
local($result,$diff);
$diff = $end - $start;
$result = 100*$diff / $start;
printf "%.2f - %.2f -> %.2f (%5.2f%%)n", $end, $start, $diff, $result;
return( $result );
}
# ========================================================================
sub hms
{
my ($secs) = @_;
$min = int($secs/60);
$secs -= 60 * $min;
$hr = int($min/60);
$min -= 60 * $hr;
printf("%02d:%02d:%02dn", $hr, $min, $secs);
}
# ========================================================================
sub factorial
{
my ($a);
($a) = @_;
$r = ($a == 1) ? 1 : $a * factorial($a - 1);
return $r;
}
# ========================================================================
sub gcd
{
my ($a, $b);
($a, $b) = @_;
($a, $b) = ($b, $a) if ($a < $b);
$r = $a % $b;
printf("$a = (%d) * $b + $rn", int($a/$b));
if ($r == 0)
{
return $b;
}
else
{
return gcd($b, $r);
}
}

Comments (0)

You don't have permission to comment on this page.