Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8107175&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 05:16:22 2016
Кодировка: Windows-1251
вопрос по программе - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
minimax
Sonic

Рег.: 29.10.2003
Сообщений: 725
Из: деревня:)
Рейтинг: 26
  вопрос по программе
      27.11.2008 14:24
-1

Туплю уже около часа:(
Суть вопроса: есть два массива 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 - второй
code:
Function Total(var c,d:array of Double):Tarray; var i,j,k,z:integer; b,g,e:TArray; begin j:=0; k:=0; z:=0; SetLength(b,j+1); SetLength(g,j+1); b[j]:=1; for i:=0 to Length(c)-2 do begin if c[i]=c[i+1] then begin b[j]:=b[j]+1; Inc(z); SetLength(e,z); e[z-1]:=d[i]; end else begin Inc(j); SetLength(b,j+1); b[j]:=1; Inc(k); SetLength(g,k); g[k-1]:=Mean(e); z:=0 end; Inc(z); SetLength(e,z); e[z-1]:=d[i+1]; end; Inc(z); SetLength(e,z); e[z-1]:=d[i+1]; Inc(k); SetLength(g,k); g[k-1]:=Mean(e); result:=b; end;




Редактировал DarkGray (27.11.2008 17:10)
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31415
Рейтинг: 8952
  Re: вопрос по программе [re: minimax]
      27.11.2008 14:26
 

а сам вопрос в чем?

minimax
Sonic

Рег.: 29.10.2003
Сообщений: 725
Из: деревня:)
Рейтинг: 26
  Re: вопрос по программе [re: DarkGray]
      27.11.2008 14:26
2

где ошибка:)

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31415
Рейтинг: 8952
  Re: вопрос по программе [re: minimax]
      27.11.2008 14:30
 

для начала сделай функцию AddItem(Array arr, int v), которая добавляет элемент в массив
и все Inc();SetLength;[]=;
замени на этот AddItem


DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31415
Рейтинг: 8952
  Re: вопрос по программе [re: minimax]
      27.11.2008 14:36
-1

а для самого начала дай нормальные имена массивам и переменным
хотя бы что-нибудь типа:
equalItemCounts, averages

Rad
delinquent guy

Рег.: 06.09.2005
Сообщений: 17291
Из: here and there
Рейтинг: 2232
  Re: вопрос по программе [re: minimax]
      27.11.2008 15:05
 

я правильно понимаю, что ты на Delphi пишешь?
В ответ на:

array of Double


если это тоже самое, что Tarray, то следует так и писать, а то у тебя получается open array parameter. Далее я бы сделал что-то типа такого (не читал код, поэтому пишу по словесному описанию):

code:
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: не проверял



minimax
Sonic

Рег.: 29.10.2003
Сообщений: 725
Из: деревня:)
Рейтинг: 26
  Re: вопрос по программе [re: Rad]
      27.11.2008 15:14
 

Спасибо, но уже сделал:)
При оптимизации кода обязательно учту, а пока надо срочно данные обработать:(

Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в