вопрос по программе
а сам вопрос в чем?
где ошибка:)
и все Inc;SetLength;[]=;
замени на этот AddItem
хотя бы что-нибудь типа:
equalItemCounts, averages
array of Doubleесли это тоже самое, что Tarray, то следует так и писать, а то у тебя получается open array parameter. Далее я бы сделал что-то типа такого (не читал код, поэтому пишу по словесному описанию):
const epsilon = 0.0001;
Function Total(c,d:Tarray):Tarray;
var i, j: integer; sum: double;
begin
j:=0;
sum:=d[0];
setlength(c, length(c;setlength(d, length(d;//это надо сделать чтобы не портить исходные массивы
for i:=1 to length(c)-1do begin
if abs(c[i]-c[j])<epsilon*abs(c[i]) //именно так следует сравнивать значения типа double
then begin
sum:=sum+d[i];
continue;
end;
d[j]:=sum/(i-j);
inc(j);
c[j]:=c[i];
end;
d[j]:=sum/(length(s)-1-j);
setlength(c, j+1);
setlength(d, j+1);
//что надо вернуть, не понял.
end;
ps: не проверял
При оптимизации кода обязательно учту, а пока надо срочно данные обработать:(
Оставить комментарий
zubr15
Туплю уже около часа:(Суть вопроса: есть два массива 1-ый-[ 1,1,2,2,3] , 2-ой -[1,1,6,3,0]. Считаю кол-во одинаковых элементов в первом массиве, а во втором среднее между соответсвиями (эти массивы связаны
В итоге должно получиться следующее : для первого массива - [2,2,1], а для второго [(1+1)/2=1, (6+3)/2=4.5, 0/1=0]
Вот сам код с которым мучаюсь (он уже успел вырасти
Не могу сделать так, чтоб корректно работал:(
c-1-ый массив, d - второй