Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 23:45   #1
Kreky
 
Регистрация: 16.11.2011
Сообщений: 5
Сообщение скомпилировать

очень нужна помощь. учила другой язык, а сейчас требуется написать на дельфях прогу и сделать форму. кто может по готовой проге сделать exe файл.

Код:
unit U1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, ExtCtrls, ToolWin, ImgList, XPMan;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton3: TToolButton;
    Panel1: TPanel;
    Label3: TLabel;
    Edit1: TEdit;
    Label4: TLabel;
    Edit2: TEdit;
    Label5: TLabel;
    Edit3: TEdit;
    ComboBox1: TComboBox;
    ImageList1: TImageList;
    Label1: TLabel;
    XPManifest1: TXPManifest;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
type
  Vector = array [1..15] of real;
const
  Np = 2;
  fun: array [1..3] of string[80] = (
    'f(x)= 90*x[1]*x[1]+50*Sqr((x[2]*x[2]+2)/(x[2]*x[2]+2))',
    'f(x)= x[2]*x[2]+50*Sqr((x[1]*x[1]+5)/(x[1]*x[1]+3))',
    'f(x)= 6*x[1]+2*x[1]*x[1]–2*x[1]*x[2]+2*x[2]*x[2]');
var
  nf: integer;
Function Fx(x: Vector; m: integer): real;
//минимизируемые функции
begin
  Fx := 0;
  case m of
    1: Fx := 90*x[1]*x[1]+50*Sqr((x[2]*x[2]+2)/(x[2]*x[2]+2));
    2: Fx := x[2]*x[2]+50*Sqr((x[1]*x[1]+5)/(x[1]*x[1]+3));
    3: Fx := 6*x[1]+2*x[1]*x[1]–2*x[1]*x[2]+2*x[2]*x[2];
  end;
end;
Procedure H_J(N: integer; X: Vector; h: real; var P: Vector;
             var fe: integer; var fb: real);
{ Метод Хука – Дживса для минимизации функции.
  N – число переменных.
  X – начальные приближения
  h–шаг
  Р–решение
  fe–число итераций
  fb–минимум функции}
var
  ps, bs, i, j: integer;
  z, k, fi: real;
  y, b: Vector;
  ff: textfile;
label
  200, 540;
begin
  AssignFile(ff, 'huk'); Rewrite(ff);
  WriteLn(ff, 'Минимизируется функция ', fun[nf + 1]);
  k := h;
  fe := 0;
  for i := 1 to N do
    begin
      y[i] := X[i];
      P[i] := X[i];
      b[i] := X[i];
    end;
  Inc(fe);
  z := Fx(X, nf + 1);
  fi := z;
  for i := 1 to N do
    Write(ff, ' X', i, '=', X[i]:7:3);
  WriteLn(ff);
  ps := 0;
  bs := 1;
  {исследование вокруг базисной точки}
  j := 0;
  fb := fi;
  200:
  repeat
    Inc(j);
    X[j] := Y[j] + k;
    z := Fx(X, nf + 1);
    Inc(fe);
    if z >= fi then
      begin
       X[j] := Y[j] – k;
       z := Fx(X, nf + 1);
       Inc(fe);
       if z >= fi then
         X[j] := Y[j]
       else
         Y[j] := X[j];
      end
    else
      Y[j] := X[j];
    z := Fx(X, nf + 1);
    Inc(fe);
    fi := z;
  until j = N;
  if fi < fb – 1e–8 then
    Goto 540;
  if (ps = 1) and (bs = 0) then
    begin
      for i := 1 to N do
       begin
         y[i] := b[i];
         P[i] := b[i];
         X[i] := b[i];
       end;
      z := Fx(X, nf + 1);
      bs := 1;
      ps := 0;
      fi := z;
      fb := z;
      j := 0;
      Goto 200;
    end;
  k := k / 10;
  if k < 1e–8 then
    begin
      WriteLn(ff, 'Решение найдено.');
      for i := 1 to N do
        Write(ff, ' X', i, '=', P[i]:7:3);
      WriteLn(ff);
      WriteLn(ff, 'Минимум функции ', fb:10:7);
      WriteLn(ff, 'Число итераций ', fe);
      CloseFile(ff);
      Exit;
    end;
  j :=  0;
  Goto 200;
  540:
  {поиск по образцу}
  for i := 1 to N do
    begin
      P[i] := 2 * y[i] – b[i];
      b[i] := y[i];
      X[i] := P[i];
      y[i] := X[i];
    end;
  z := Fx(X, nf + 1);
  fb := fi;
  ps := 1;
  bs := 0;
  fi := z;
  j := 0;
  Goto 200;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
// выход из программы
begin
  Close;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
// оптимизация
var
  P, X, X0: Vector;
  i, fe: integer;
  E, fb: real;
begin
  Val(Edit1.Text, x0[1], i);
  Val(Edit2.Text, x0[2], i);
  Val(Edit3.Text, E, i);
  for i := 1 to Np do
    X[i] := X0[i];
  nf := ComboBox1.ItemIndex;
  if nf = –1 then nf := 0;
  H_J(Np, X, E, P, fe, fb);
  Memo1.Lines.LoadFromFile('huk');
end;
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.11.2011 в 00:30.
Kreky вне форума Ответить с цитированием
Старый 16.11.2011, 23:47   #2
Kreky
 
Регистрация: 16.11.2011
Сообщений: 5
По умолчанию

Безымянный 2.jpg так выглядиеть должно
Kreky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На чём скомпилировать ОС ? Eisregen Общие вопросы C/C++ 2 01.08.2011 19:08
Скомпилировать программу I.nessa Помощь студентам 10 11.12.2010 22:29
не получаеться скомпилировать motaro Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 29.03.2009 12:17
Невозможно скомпилировать The_Immortal Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.10.2008 19:03
скомпилировать проект Killbrum Общие вопросы C/C++ 5 02.09.2008 09:26