![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 22.05.2011
Сообщений: 7
|
![]()
Привет! У меня такое задание: есть такая таблица показателей по годам (P[i,j]):
показатель 2006 2007 2008 2009 Х1 0,220 0,344 0,317 0,003 Х2 1,920 1,43 1,245 1,312 Х3 0,581 0,703 0,885 0,654 Х4 0,208 0,141 0,117 0,113 Х5 -0,486 -0,239 -0,051 -0,340 Х6 0,263 0,164 0,133 0,128 и таблица для классификации на уровни (V[i,r]) Пок Границы Низкий Средний Высокий Х1 -0,3 -0,1 0,1 Х2 0,35 1,25 2,15 Х3 -0,1 0,2 0,5 Х4 0,06 0,3 0,54 Х5 -1,5 - 0,5 0,5 Х6 -0,1 0,9 1,9 надо создать таблицу , в которой будут показатели по годам и уровни (низкий, средний, высокий). При етом, к примеру, если Х1 < = -0,3 или >=0,1 или =-0,1 то в соответствующей ячейке должна стоять 1, а в остальных 0. Если -0,3<Х1<-0,1, то в ячейках напротив "низкий" и "средний" должно быть значение функции f=1/(1+((a+b)/3)^2), где а это значение показателя з первой таблицы, b - для "низкий" -0,3, для "средний" -0,1 (таблица2). Аналогично для второго диапазона. Должно получиться приблизительно такое (M[i,j,r]) Пок 2006 2007 Н С В Н С В Х1 0 0 1 0 0 1 Х2 0 0,65 0,45 0 1 0 Х3 0 0 1 0 0 1 Х4 0,2 0,8 0 1 0 0 Х5 0,05 0,95 0 0 1 0 Х6 0,3 0,7 0 1 0 0 для 4 годов. далее надо умножыть каждый елемент на 1/6 (в программе - массив w[i]) и просуммировать по i (получиться K[j,r]), умножить на g[r]=0,9-1/3*(r-1) и сумма по j (получиться L[j]) . Потом снова классифицируем, но уже по другой формуле (см. программу). На выходе должна быть таблица виду Год 2006 2007 2008 2009 R1 1 0 0,32 0 R2 0 0,72 0,68 0 R3 0 0,28 0 1 Я что-то написала, но оно не работает.((((Учила Delphi сама по учебниках с нета, так что не судите стого)))) unit NeLog; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type private { Private declarations } public { Public declarations } end; var i, j, r: integer P:array[1..6,1..4] of real V:array[1..6,1..3] of real M:array[1..6,1..4,1..3] of boolean W:array[1..6] of real K:array[1..4,1..3] of real L:array[1..4] of real g:array[1..3] of real implementation {$R *.DFM} begin for i:=1 to 6 do begin for j:=1 to 4 do begin r:=1 if P[i,j]<=V[i,r] then M[i,j,r+1]:=0 and M[i,j,r+2]:=0 else if V[i,r]<P[i,j]<V[i,r+1] then M[i,j,r]:=1/(1+((P[i,j]+V[i,r])/3)^2) and M[i,j,r+1]:= 1/(1+((P[i,j]+V[i,r+1])/3)^2) and M[i,j,r+2]:=0 else r:=r+1 if P[i,j]=V[i,r] then M[i,j,r-1]:=0 and M[i,j,r+1]:=0 else if V[i,r]<P[i,j]<V[i,r+1] then M[i,j,r]:=1/(1+((P[i,j]+V[i,r])/3)^2) and M[i,j,r+1]:= 1/(1+((P[i,j]+V[i,r+1])/3)^2) and M[i,j,r-1]:=0 else r:=r+1 and M[i,r-2]:=0 and M[i,r-1]:=0 and M[i,r]:=1; end; end; end; begin for j:=1 to 4 do begin for r:=1 to 3 do begin for i:=1 to 6 do K[j]:=0; M[i,j,r]:=w[i]*M[i,j,r]; K[j,r]:=K[j,r]+M[i,j,r]; end; g[r]:=0,9-1/3*(r-1); L[j]:=L[j]+K[j,r]; end; end; begin for j:=1 to 4 do begin i:=1 R[i,j]:=0; if 0<=L[j]<=0,2 then R[i,j]:='1'; else if 0,2<L[j]<0,4 then R[i,j]:=-5*L[j]+2 and R[i+1,j]:=1-R[i,j]; else if 0,4<=L[j]<=0,6 then R[i+1,j]:='1'; else if 0,6<L[j]<0,8 then R[i+1,j]:=-5/3*L[j]+4/3 and R[i+2,j]:=1-tabl.Cells[i+1,j]; else R[i,j]:='1'; end; вывод таблицы R (не знаю как красиво вывести) end. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi, сравнение массивов, умножение массивов | Marjasja | Помощь студентам | 0 | 22.05.2011 19:59 |
Delphi, сравнение массивов, умножение массивов | Marjasja | Общие вопросы Delphi | 0 | 22.05.2011 19:49 |
ВЫчитание, умножение и деление массивов на С++ | Flood | Помощь студентам | 2 | 15.05.2010 16:54 |
Умножение массивов Паскаль+АСМ | xVxSeRGxVx | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 24 | 21.02.2010 14:11 |
Корректное сравнение массивов на условии. | Alex Cones | Общие вопросы Delphi | 4 | 10.01.2010 15:08 |