Функция от динамического массива

Народ, вот писал задачу и встрял,посмотрите пожалуста где ошибка.если можно с комментариями. Вот условие:Для решения задачи использовать одномерные массивы. Пусть даны натуральные числа k,n, вечественные числа a1,a2,...,a(kn) {в круглых скобочках индекс члена ряда}Получите min(a1+a2+...+ak,a(k+1)+a(k+2)+...+a(2*k),...,a(k*(n-1)+1)+...+a(k*n)) Написать и использовать 2 функции: считающую сумму последовательности с индексами от s до t, и функцию, считающую min из чисел последовательности.Вот какой текст программы у меня полусчился:uses SysUtils;function min(const B:array of real):real; var t:real; i:integer; begin t:=B[1]; for i:=2 to High(B) do if t>B[i] then t:=B[i]; min:=t; end; function Sum(const A: array of Real;s,t:integer): Real;var I: Integer; Su: Real; begin Su := 0; for I := s to t do Su := Su + A[I]; Sum := Su; end; var k,n,NN,i,tmp,j,p:integer; A,B : array of real; tmp2:real; begin writeln('vvedite k'); readln(k); writeln('vvedite n'); readln(n); NN:=k*n; SetLength(A,NN);for i:=1 to NN do begin writeln('vvedite a',i); readln(A[i]); end; tmp:=k*(n-1)+1-2*k+2; SetLength(B,tmp); B[1]:=sum(A,1,k); B[2]:=sum(A,k+1,2*k); {writeln('A8=',A[8]:8:4); } B[tmp]:=sum(A,k*(n-1)+1,k*n); {считая эту сумму,функция почему-то не видит последний член ряда в чём ошибка,я не понимаю...} {writeln('B[n]= ',B[tmp]:8:4);}for p:=3 to tmp-1 do B[p]:=A[p+2]; {for j:=1 to tmp do writeln('B= ', B[j]:8:4);} tmp2:=min(B); writeln('min=',tmp2:8:4); readln; end.
1 ответ

uses SysUtils;function min(const B:array of real):real; var t:real; i:integer; begin t:=B[1]; for i:=2 to High(B) do if t>B[i] then t:=B[i]; min:=t; end; function Sum(const A: array of Real;s,t:integer): Real;var i:integer; Su: Real; begin Su := 0; for I := s to t do Su := Su + A[I]; Sum := Su; end; var k,n,NN,i,tmp,j,p:integer; A,B : array of real; tmp2:real; begin write('vvedite k='); readln(k); write('vvedite n='); readln(n); NN:=k*n; SetLength(A,NN);for i:=1 to NN do begin write('vvedite a=',i); readln(A[i]); end; tmp:=k*(n-1)+1-2*k+2; SetLength(B,tmp); B[1]:=sum(A,1,k); B[2]:=sum(A,k+1,2*k); writeln('A8=',A[8]:8:4); B[tmp]:=sum(A,k*(n-1)+1,k*n); write('B[n]= ',B[tmp]:8:4); for p:=3 to tmp-1 do B[p]:=A[p+2]; for j:=1 to tmp do writeln('B= ', B[j]:8:4); tmp2:=min(B); writeln('min=',tmp2:8:4); readln; end.