![]() |
|
#1
|
|||
|
|||
![]() Здравствуйте, ребят подскажите пожалуйста мучаюсь уже не первый час! Как мне это реализовать в Delphi? Куда именно это написать -(
Код:
procedure Tform1.Regress(num: integer); {num кол-во элементов} var a, b, x_avg, y_avg, temp, temp2, cor: real; t, min, max: integer; ch: char; begin y_avg := 0; x_avg := 0; for t := 1 to num do begin y_avg := y_avg + StrToFloat(StringGrid1.Cells[t,1]); x_avg := x_avg + StrToFloat(StringGrid1.Cells[t,0]); end; x_avg := x_avg/num; y_avg := y_avg/num; temp := 0; temp2 := 0; for t := 1 to num do begin temp := temp +(StrToFloat(StringGrid1.Cells[t,1]) - y_avg)*(StrToFloat(StringGrid1.Cells[t,0])-x_avg); temp2 := temp2 +(t - x_avg)*(t-x_avg); end; b := temp/temp2; a := y_avg-(b*x_avg); Image1.Canvas.Brush.Color:=clWhite; Image1.Canvas.Pen.Color:=clWhite; Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Pen.Color:=clRed; For t:=1 to num do image1.Canvas.Ellipse(Trunc(StrToFloat(StringGrid1.Cells[t,0]))-2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))-2, Trunc(StrToFloat(StringGrid1.Cells[t,0]))+2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))+2); Image1.Canvas.Pen.Color:=clBlack; image1.Canvas.MoveTo(1, Image1.Height - Trunc(a+b)); image1.Canvas.LineTo(100,Image1.Height - Trunc(a+b*100)); Label2.Caption:='Y = '+FloatToStr(Trunc(b*100)/100)+'x + '+FloatToStr(Trunc(a*100)/100); end; |
#2
|
|||
|
|||
![]() Поможет кто? Не особо понимаю куда эту процедуру надо вписать ((
|
#3
|
|||
|
|||
![]() в модуль формы Form1 перед End.
в описание формы вписать : Код:
procedure Regress(num: integer); Код:
type TForm1 = class(TForm) BitBtn1: TBitBtn; sNotebook1: TsNotebook; sLabel1: TsLabel; Image1: TImage; Button1: TButton; Image2: TImage; Button2: TButton; Notebook1: TNotebook; BitBtn2: TBitBtn; StringGrid1: TStringGrid; procedure Regress(num: integer); procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; для вызова процедуры в обработчике события кнопки (например) вызываете по ее имени! Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#4
|
|||
|
|||
![]() Цитата:
|
#5
|
|||
|
|||
![]() остальное это что? конкретнее пожалуйста!
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#6
|
|||
|
|||
![]() Цитата:
Код:
type TForm1 = class(TForm) BitBtn1: TBitBtn; sNotebook1: TsNotebook; sLabel1: TsLabel; Image1: TImage; Button1: TButton; Image2: TImage; Button2: TButton; Notebook1: TNotebook; BitBtn2: TBitBtn; StringGrid1: TStringGrid; procedure Regress(num: integer); procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Код:
var a, b, x_avg, y_avg, temp, temp2, cor: real; t, min, max: integer; ch: char; begin y_avg := 0; x_avg := 0; for t := 1 to num do begin y_avg := y_avg + StrToFloat(StringGrid1.Cells[t,1]); x_avg := x_avg + StrToFloat(StringGrid1.Cells[t,0]); end; x_avg := x_avg/num; y_avg := y_avg/num; temp := 0; temp2 := 0; for t := 1 to num do begin temp := temp +(StrToFloat(StringGrid1.Cells[t,1]) - y_avg)*(StrToFloat(StringGrid1.Cells[t,0])-x_avg); temp2 := temp2 +(t - x_avg)*(t-x_avg); end; b := temp/temp2; a := y_avg-(b*x_avg); Image1.Canvas.Brush.Color:=clWhite; Image1.Canvas.Pen.Color:=clWhite; Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Pen.Color:=clRed; For t:=1 to num do image1.Canvas.Ellipse(Trunc(StrToFloat(StringGrid1.Cells[t,0]))-2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))-2, Trunc(StrToFloat(StringGrid1.Cells[t,0]))+2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))+2); Image1.Canvas.Pen.Color:=clBlack; image1.Canvas.MoveTo(1, Image1.Height - Trunc(a+b)); image1.Canvas.LineTo(100,Image1.Height - Trunc(a+b*100)); Label2.Caption:='Y = '+FloatToStr(Trunc(b*100)/100)+'x + '+FloatToStr(Trunc(a*100)/100); end; |
#7
|
|||
|
|||
![]() нет я написал что текст процедуры надо вписать полностью:
Цитата:
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#8
|
|||
|
|||
![]() Цитата:
Код:
procedure Tform1.Regress(num: integer); {num кол-во элементов} var a, b, x_avg, y_avg, temp, temp2, cor: real; t, min, max: integer; ch: char; begin y_avg := 0; x_avg := 0; for t := 1 to num do begin y_avg := y_avg + StrToFloat(StringGrid1.Cells[t,1]); x_avg := x_avg + StrToFloat(StringGrid1.Cells[t,0]); end; x_avg := x_avg/num; y_avg := y_avg/num; temp := 0; temp2 := 0; for t := 1 to num do begin temp := temp +(StrToFloat(StringGrid1.Cells[t,1]) - y_avg)*(StrToFloat(StringGrid1.Cells[t,0])-x_avg); temp2 := temp2 +(t - x_avg)*(t-x_avg); end; b := temp/temp2; a := y_avg-(b*x_avg); Image1.Canvas.Brush.Color:=clWhite; Image1.Canvas.Pen.Color:=clWhite; Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Pen.Color:=clRed; For t:=1 to num do image1.Canvas.Ellipse(Trunc(StrToFloat(StringGrid1.Cells[t,0]))-2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))-2, Trunc(StrToFloat(StringGrid1.Cells[t,0]))+2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))+2); Image1.Canvas.Pen.Color:=clBlack; image1.Canvas.MoveTo(1, Image1.Height - Trunc(a+b)); image1.Canvas.LineTo(100,Image1.Height - Trunc(a+b*100)); Label2.Caption:='Y = '+FloatToStr(Trunc(b*100)/100)+'x + '+FloatToStr(Trunc(a*100)/100); end; |
#9
|
|||
|
|||
![]() Вроде понял, но теперь почему то он ругает "num" он же вроде описан в процедуре.
|
#10
|
|||
|
|||
![]() Вот так:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure Regress(num: integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure Tform1.Regress(num: integer); {num кол-во элементов} var a, b, x_avg, y_avg, temp, temp2, cor: real; t, min, max: integer; ch: char; begin y_avg := 0; x_avg := 0; for t := 1 to num do begin y_avg := y_avg + StrToFloat(StringGrid1.Cells[t,1]); x_avg := x_avg + StrToFloat(StringGrid1.Cells[t,0]); end; x_avg := x_avg/num; y_avg := y_avg/num; temp := 0; temp2 := 0; for t := 1 to num do begin temp := temp +(StrToFloat(StringGrid1.Cells[t,1]) - y_avg)*(StrToFloat(StringGrid1.Cells[t,0])-x_avg); temp2 := temp2 +(t - x_avg)*(t-x_avg); end; b := temp/temp2; a := y_avg-(b*x_avg); Image1.Canvas.Brush.Color:=clWhite; Image1.Canvas.Pen.Color:=clWhite; Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Pen.Color:=clRed; For t:=1 to num do image1.Canvas.Ellipse(Trunc(StrToFloat(StringGrid1.Cells[t,0]))-2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))-2, Trunc(StrToFloat(StringGrid1.Cells[t,0]))+2,Image1.Height -Trunc(StrToFloat(StringGrid1.Cells[t,1]))+2); Image1.Canvas.Pen.Color:=clBlack; image1.Canvas.MoveTo(1, Image1.Height - Trunc(a+b)); image1.Canvas.LineTo(100,Image1.Height - Trunc(a+b*100)); Label2.Caption:='Y = '+FloatToStr(Trunc(b*100)/100)+'x + '+FloatToStr(Trunc(a*100)/100); end; end. киньте кнопку и 2 раза на нее нажмите: появится ее (кнопки) обработчик туда впишите чтоб было так: Код:
procedure TForm1.Button1Click(Sender: TObject); begin Regress(12); end; Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#11
|
|||
|
|||
![]() если ругается на num значит сделали что то не так.
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#12
|
|||
|
|||
![]() Все! Вроде все правильно, только при нажатии на кнопку ничего не происходит кроме ошибки..флотинг поинт помоему! Но это как я знаю из-за того что в стринггриде пустые поля! А их никак нельзя заполнить? Просто хотел вписать в стринггрид и немогу ((
И почему кстати Regress(12) в скобках 12 а не 5 например? Последний раз редактировалось Lenovo, 16.12.2010 в 11:48. |
#13
|
|||
|
|||
![]() 12 просто так, откуда я знаю почему не 5
![]() за место 12 надо передать кол-во строк (?) стринггрида. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |