Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2010, 10:23
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
Сообщение Процедура

Здравствуйте, ребят подскажите пожалуйста мучаюсь уже не первый час! Как мне это реализовать в 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  
Старый 16.12.2010, 10:43
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Поможет кто? Не особо понимаю куда эту процедуру надо вписать ((
Ответить с цитированием
  #3  
Старый 16.12.2010, 10:52
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

в модуль формы 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  
Старый 16.12.2010, 11:00
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Цитата:
Сообщение от Black Raider
в модуль формы 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;

для вызова процедуры в обработчике события кнопки (например) вызываете по ее имени!
А остальное куда писать? Я просто не очень хорошо знаю Delphi! Ту процедуру мне вписать как вы сказали..далее остальное куда все деть?))
Ответить с цитированием
  #5  
Старый 16.12.2010, 11:07
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

остальное это что? конкретнее пожалуйста!
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #6  
Старый 16.12.2010, 11:11
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Цитата:
Сообщение от Black Raider
остальное это что? конкретнее пожалуйста!
Вы писали, мол процедуру надо сделать так
Код:
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  
Старый 16.12.2010, 11:21
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

нет я написал что текст процедуры надо вписать полностью:
Цитата:
в модуль формы Form1 перед End.
+ ее (процедуры) описание в описание формы.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #8  
Старый 16.12.2010, 11:28
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Цитата:
Сообщение от Black Raider
нет я написал что текст процедуры надо вписать полностью:

+ ее (процедуры) описание в описание формы.
Я ничего не могу понять, какие модули, какие процедуру! Конкретно этот весь текст куда надо вписать опишите пожалуйста! Покажите на примере..что именно куда надо!

Код:
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  
Старый 16.12.2010, 11:32
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Вроде понял, но теперь почему то он ругает "num" он же вроде описан в процедуре.
Ответить с цитированием
  #10  
Старый 16.12.2010, 11:34
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Вот так:
Код:
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  
Старый 16.12.2010, 11:36
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

если ругается на num значит сделали что то не так.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #12  
Старый 16.12.2010, 11:42
Lenovo Lenovo вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 39
Репутация: -2254
По умолчанию

Все! Вроде все правильно, только при нажатии на кнопку ничего не происходит кроме ошибки..флотинг поинт помоему! Но это как я знаю из-за того что в стринггриде пустые поля! А их никак нельзя заполнить? Просто хотел вписать в стринггрид и немогу ((
И почему кстати Regress(12) в скобках 12 а не 5 например?

Последний раз редактировалось Lenovo, 16.12.2010 в 11:48.
Ответить с цитированием
  #13  
Старый 16.12.2010, 13:13
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

12 просто так, откуда я знаю почему не 5

за место 12 надо передать кол-во строк (?) стринггрида.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025