don't overwrite $val and use separate variable to calculate in-between values?
you seem to not understand the purpose of your own variables.
have you tried:
- using seperate var for this line:
$val = (($id - $next_id) / ($prev_id - $next_id)) * $prev_val + (($id - $prev_id) / ($next_id - $prev_id)) * $next_val; or even plugging the expression directly into printf() so you don't overwrite actual $val needed later?
- cleaning up the mess with variables that are used but never get any value, like $prev_id, $next_val, $next_id, and vice versa - $i not used anywhere? Your code doesn't use $i at all and it's the only thing that changes in the for-loop scope, you have to use it.
Decide if you want to use $i or $temporary_intermediary_id as the loop controller or whatever and stick to it.
Code:
#! /usr/bin/perl -w
use strict;
my ($prev_id, $prev_val) = (0,0);
while (<>)
{
my ($id, $val) = split;
for( my $temp_id=$prev_id+1; $prev_id>0 && $temp_id<$id; $temp_id++ )
{
printf( "*%s is between %s(%s) and %s(%s) <- all numbers required to generate value, use them!\n", $temp_id, $prev_id, $prev_val, $id, $val );
}
printf( "%d %s\n", $id, $val );
($prev_id, $prev_val) = ($id, $val);
}
Code:
$ ./num2.pl <<< $'1 1\n5 17\n9 25'
1 1
*2 is between 1(1) and 5(17) <- all numbers required to generate value, use them!
*3 is between 1(1) and 5(17) <- all numbers required to generate value, use them!
*4 is between 1(1) and 5(17) <- all numbers required to generate value, use them!
5 17
*6 is between 5(17) and 9(25) <- all numbers required to generate value, use them!
*7 is between 5(17) and 9(25) <- all numbers required to generate value, use them!
*8 is between 5(17) and 9(25) <- all numbers required to generate value, use them!
9 25
Bookmarks