![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 13.12.2010
Сообщений: 1
|
![]()
Помогите плиз.....
Задача такая: Надо спомощью нормального распеделения, заполнить таблицу случайными числами, потом построить рисунок в котором чем число меньше, тем светлее(это я сделала), а вот потом надо рассчитать координаты максимума и закрасить его в таблице(вот тут проблемы). Координаты нахожу, иначе не смогла бы построить рисунок, а вот закрасить в StreanGreat не получается=(( Помогите пожалуйста!!!!!!!!!!!!!!! Вот код проги: procedure TForm1.Button1Click(Sender: TObject); var i,j,n,m,xmax,ymax:Integer; rx,ry,min,max,d:extended; x,e:array [0..100,0..100] of real; begin тут тож косяк(надо проверить, чтобы в Edit вводились только целые) try begin m:= StrToInt(edit1.Text); n:= StrToInt(Edit2.Text); end except on eException do ShowMessage('ввведите натуральные числа') end;if (m=1) and (n=1) then //проверка дробных, положительный и не едениц begin ShowMessage('Нельзя водить две единицы'); exit; end; if (m<0) or (n<0) then begin ShowMessage('только натуральные числа'); exit; end; stringGrid1.ColCount:=m; StringGrid1.RowCount:=n; rx:=StrToFloat(edit3.Text); ry:=StrToFloat(Edit4.Text); //проверка коф. корреляции if ((rx<0) or (rx>1)) or ((ry<0) or (ry>1)) then begin ShowMessage('коэффициенты корреляции должны быть от 0 до 1'); exit; end; for i:=0 to m do for j:=0 to n do // заполнение таблицы x[i,j]:=gause(0,1); e:=x; for i:=1 to m do //фильтрация по х for j:=0 to n do e[i,j]:=rx*e[i-1,j]+sqrt(1-rx*rx)*x[i,j]; x:=e; for i:=1 to m do //фильтрация по у for j:=1 to n do x[i,j]:=ry*x[i,j-1]+sqrt(1-ry*ry)*e[i,j]; min:=x[1,1]; max:=min; for i:=1 to m do //заполнение массива for j:=1 to n do begin StringGrid1.Cells[i-1,j-1]:=FloatToStr(x[i,j]); //выявление максимума и минимума if x[i,j]>max then begin xmax:=i; ymax:=j;max:=x[i,j];end; if x[i,j]<min then min:=x[i,j]; end; (тут начинаются чудеса=) есть два варианта...но где-то косяк=() with StringGrid1.canvas do {if StringGrid1.Cells[i,j]=FloatToStr(max) then begin Font.Color:=clRed; StringGrid1.Canvas.Brush.Color:=clY ellow; FillRect(Rect); end;} {if (xmax=i) and (ymax=j) then with StringGrid1.Canvas do begin Brush.Color:=clBlue; //Font.Size:=Font.Size+2; //Font.Color:=clYellow; TextOut(Rect.Left+2,Rect.Top+2,Stri ngGrid1.Cells[xmax,ymax]); end;}p.Width:=m*7+(m+1)*2; //формирование размеров рисунка p.Height:=n*7+(n+1)*2; d:=max-min; p.Canvas.Brush.Color:=clFuchsia; // цвет заливки p.Canvas.FillRect(p.ClientRect); for i:=1 to m do // формирование рисунка for j:=1 to n do begin p.Canvas.Brush.Color:=RGB(trunc((x[i,j]-min)*255/d),trunc((x[i,j]-min)*255/d),trunc((x[i,j]-min)*255/d)); p.Canvas.FillRect(Rect(2+9*(i-1),2+9*(j-1),9+9*(i-1),9+9*(j-1))); end; end; Посоветуйте, кто что может.... |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переход в следующую ячейку в StringGrid | artemavd | Общие вопросы Delphi | 3 | 25.12.2010 23:20 |
Закрасить ячейки в строках StringGrid в потоках | fredwriter | Общие вопросы Delphi | 12 | 17.11.2010 19:06 |
CheckBox в ячейку StringGrid | mutabor | Общие вопросы Delphi | 0 | 23.08.2010 10:54 |
требуется вывести прямоугольник и строку по координатам из файла | zmaxon | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 15.01.2010 09:59 |
Задача Паскаль. Поиск квадранта по координатам. | Maks_X | Помощь студентам | 6 | 14.10.2009 00:35 |