Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 22.05.2011, 19:49   #1
Marjasja
Новичок
Джуниор
 
Регистрация: 22.05.2011
Сообщений: 7
Репутация: 10
По умолчанию Delphi, сравнение массивов, умножение массивов

Привет! У меня такое задание: есть такая таблица показателей по годам (P[i,j]):

показатель 2006 2007 2008 2009
Х1 0,220 0,344 0,317 0,003
Х2 1,920 1,432 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.
Marjasja вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух массивов Рик Общие вопросы Delphi 3 07.04.2011 15:53
сравнение массивов nik1905 Microsoft Office Excel 3 13.12.2010 14:53
ВЫчитание, умножение и деление массивов на С++ Flood Помощь студентам 2 15.05.2010 16:54
Умножение массивов Паскаль+АСМ xVxSeRGxVx Assembler 24 21.02.2010 15:11


14:11.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.