|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2012, 19:16 | #1 |
Пользователь
Регистрация: 30.05.2011
Сообщений: 21
|
Делфи (симплекс)
есть StringGrid 8х5 заполненный значениями, нужно по нажатию кнопки решать каждую ячейку по формуле, и перезаписывать снова в этот же StringGrid.
формула такая: Новое значение:= старое значение - ((значение ключевого столба)*(значение ключевой строки))/разрешающий элемент. разрешающий элемент=это перекрестие ключевого столба и строки. Здесь у меня находит ключевую строку, столбец. знаю что всё в кашу, и в 1 процедуре.. но по другому не получается, помогите с выше сказанным. procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var X,v,a1,aa1,aaa1,a2,aa2,aaa2,a3,aa3, aaa3,min: Real; i:integer; begin a:=1; min:=65000; for i:=1 to 7 do begin v:=StrToFloat(stringgrid1.Cells[i, 4]); if a<abs(v) then begin a:=v; a1:=strtofloat(stringgrid1.Cells[1,1]); aa1:=strtofloat(stringgrid1.Cells[i,1]); aaa1:=a1/aa1; a2:=strtofloat(stringgrid1.Cells[1,2]); aa2:=strtofloat(stringgrid1.Cells[i,2]); aaa2:=a2/aa2; a3:=strtofloat(stringgrid1.Cells[1,3]); aa3:=strtofloat(stringgrid1.Cells[i,3]); aaa3:=a3/aa3; if aaa1<aaa2 then min:=aaa1 else min:=aaa2; if min>aaa3 then min:=aaa3; end; end; if min=aaa1 then begin if ((acol=1)and (arow=1))or((acol=2)and(arow=1))or( (acol=3)and(arow=1))or ((acol=4)and(arow=1))or((acol=5)and (arow=1))or((acol=6)and(arow=1))or( (acol=7)and(arow=1)) then StringGrid1.Canvas.Brush.Color := cllime; end else if min=aaa2 then begin if ((acol=1)and (arow=2))or((acol=2)and(arow=2))or( (acol=3)and(arow=2))or ((acol=4)and(arow=2))or((acol=5)and (arow=2))or((acol=6)and(arow=2))or( (acol=7)and(arow=2)) then StringGrid1.Canvas.Brush.Color := cllime; end else if min=aaa3 then begin if ((acol=1)and (arow=3))or((acol=2)and(arow=3))or( (acol=3)and(arow=3))or ((acol=4)and(arow=3))or((acol=5)and (arow=3))or((acol=6)and(arow=3))or( (acol=7)and(arow=3)) then StringGrid1.Canvas.Brush.Color := cllime; end; for i:=1 to 7 do with StringGrid1 do begin try X:=StrToFloat(Cells[i, 4]); if x=abs(a) then begin if ((acol=i)and (arow=4))or((acol=i)and(arow=3))or( (acol=i)and(arow=2))or ((acol=i)and(arow=1)) then StringGrid1.Canvas.Brush.Color := cllime; StringGrid1.Canvas.Font.Color := clred; end; except end; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); end; end; я так думаю надо значения в отедельный двумерный массив записывать изначально, но как это сделать, не соображу |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Симплекс-метод на делфи | NoTimeToCry | Помощь студентам | 3 | 02.06.2013 21:22 |
Симплекс | L3zh1Y | Помощь студентам | 0 | 12.02.2012 19:45 |
Симплекс-метод (с++) | $ereg@ | Помощь студентам | 0 | 02.01.2012 21:57 |
Симплекс метод | kobe8241 | Помощь студентам | 0 | 01.12.2011 15:14 |
симплекс-метод | zajigalka | Помощь студентам | 1 | 03.05.2010 20:58 |