Maximum difference between adjacent elements of list: Difference between revisions

Content deleted Content added
Added Algol 68
Added Algol W
Line 86: Line 86:
Max difference [ ] is 0:
Max difference [ ] is 0:
Max difference [ 776.591 ] is 0:
Max difference [ 776.591 ] is 0:
</pre>

=={{header|ALGOL W}}==
<lang algolw>begin % find the maximum difference between consecutive list elements %
% returns the maximum difference between pairs of elements of list %
% the lower and upper bounds of list must be specified in lb & ub %
real procedure maxDelta ( real array list ( * )
; integer value lb, ub
) ;
begin
real maxDiff;
maxDiff := 0;
for i := lb until ub - 1 do begin
real delta;
delta := abs ( list( i ) - list( i + 1 ) );
if delta > maxDiff then maxDiff := delta % found a higher difference %
end for_i;
maxDiff
end maxDelta;
% test the maxDelta procedure %
procedure testMaxDelta ( real array list ( * )
; integer value lb, ub, rw, dp
) ;
begin
real maxDiff;
maxDiff := maxDelta( list, lb, ub );
write( s_w := 0, "Max difference [" );
for i := lb until ub do begin
writeon( r_format := "A", r_w := rw, r_d := dp, s_w := 0, " ", list( i ) );
end for_i;
writeon( r_format := "A", r_w := rw, r_d := dp, s_w := 0, " ] is ", maxDiff, ":" );
for i := lb until ub - 1 do begin
real diff;
diff := abs ( list( i ) - list( i + 1 ) );
if diff = maxDiff then begin
write( r_format := "A", r_w := rw, r_d := dp, s_w := 0, " ", list( i ), ", ", list( i + 1 ), " ==> ", diff );
end if_diff_eq_maxDiff
end for_i
end testMaxDelta;
begin % task test case %
integer tPos;
real array tc( 1 :: 17 );
tPos := 0;
for i := 1, 8, 2, -3, 0, 1, 1, -23, 0, 55, 8, 6, 2, 9, 11, 10, 3 do begin
tPos := tPos + 1;
tc( tPos ) := i
end for_i;
tc( 8 ) := -2.3; tc( 10 ) := 5.5;
testMaxDelta( tc, 1, 17, 4, 1 )
end;
begin % additional test cases %
integer tPos;
real array tc( 1 :: 3 );
tc( 1 ) := -1.1; tc( 2 ) := -1.2; testMaxDelta( tc, 1, 2, 4, 1 );
for i := 1 until 3 do tc( i ) := pi;
testMaxDelta( tc, 1, 3, 6, 4 );
testMaxDelta( tc, 1, 0, 3, 1 );
tc( 1 ) := 776.591;
testMaxDelta( tc, 1, 1, 6, 3 )
end
end.</lang>
{{out}}
<pre>
Max difference [ 1.0 8.0 2.0 -2.9 0.0 1.0 1.0 -2.2 0.0 5.5 8.0 6.0 2.0 9.0 11.0 10.0 3.0 ] is 7.0:
1.0, 8.0 ==> 7.0
2.0, 9.0 ==> 7.0
10.0, 3.0 ==> 7.0
Max difference [ -1.0 -1.1 ] is 0.1:
-1.0, -1.1 ==> 0.1
Max difference [ 3.1416 3.1416 3.1416 ] is 0.0000:
3.1416, 3.1416 ==> 0.0000
3.1416, 3.1416 ==> 0.0000
Max difference [ ] is 0.0:
Max difference [ 776.591 ] is 0.000:
</pre>
</pre>