GPS| begin real procedure GPS (I, N, Z, V); real I, N, Z, V; begin for I := 1 step 1 until N do Z := V; GPS := 1 end GPS; procedure GPS TEST 1 (m, n); value m, n; real m, n; begin real i, j; array A[1:m, 1:n]; writetext(30, [GPS*TEST*CASE*1[c_]]); comment set A[i,j] to (i+j) ; i := GPS(j, n, i, GPS(i, m, A[i,j], i+j)); writetext(30, [A[i,j]*should*be*(i+j)[c_]]); for i := 1 step 1 until m do begin for j := 1 step 1 until n do write(30, format([+d.dddddss_]), A[i,j]); writetext(30, [[c_]]); end; end GPS TEST 1; procedure GPS TEST 2 (m, n, p); value m, n, p; real m, n, p; begin real i, j, k; array A[1:m, 1:n], B[1:n, 1:p], C[1:m, 1:p]; writetext(30, [[c_][c_]GPS*TEST*CASE*2[c_]]); for i := 1 step 1 until m do for k := 1 step 1 until n do A[i,k] := i/10.0^(k-1); for k := 1 step 1 until n do for j := 1 step 1 until p do B[k,j] := k; for i := 1 step 1 until m do for j := 1 step 1 until p do C[i,j] := -999999999; comment set C to AB ; i := GPS(i, 1.0, C[1,1], 0.0) × GPS(i, (m-1) × GPS(j, (p-1) × GPS(k, n, C[i,j], C[i,j] + A[i,k]×B[k,j]), C[i,j+1], 0.0 ), C[i+1,1], 0.0 ); writetext(30, [C[i,j]*should*be*1.234j_[c_]]); for i := 1 step 1 until m do begin for j := 1 step 1 until p do write(30, format([+d.dddddss_]), C[i,j]); writetext(30, [[c_]]); end; end procedure GPS TEST 2; open(30); GPS TEST 1(5, 3); GPS TEST 2(3, 4, 5); close(30); end |