Показать сообщение отдельно
  #12  
Старый 15.11.2016, 11:49
Tupiy Tupiy вне форума
Прохожий
 
Регистрация: 13.11.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

пример подобный вот
Код:
Тексты модуля 
Листинг 5.1 
unit matfu; 
interface 
uses StdCtrls, SysUtils; 
   Type 
       fun = function(x : extended):extended; // Объявление типа функция 
             {Расчет таблицы функции f (табуляция функции)} 
  procedure Tabl(f:fun;xn,xk:extended; m: word; Mem1 : TMemo); 
implementation 
  procedure Tabl; 
     var x,y,h: extended; 
         i : integer; 
    begin 
    x:=xn;  h:=(xn-xk)/m; 
for i:=1 to m+1 do begin 
     y:=f(x); 
    Mem1.Lines.Add(' x='+FloatToStrf(x,fffixed,8,3)+ 
                                ' y='+FloatToStrf(y,fffixed,8,3)); 
        x:=x+h; 
                               end; 
     end; 
end.  // Конец модуля matfu 

// программа 
unit Unit6; 
interface 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, Buttons, ExtCtrls, Matfu; 
type 
  TForm1 = class(TForm) 
    Label1: TLabel; 
    Label2: TLabel; 
    Label3: TLabel; 
    Label4: TLabel; 
    Edit1: TEdit; 
    Edit2: TEdit; 
    Edit3: TEdit; 
    Edit4: TEdit; 
    RadioGroup1: TRadioGroup; 
    Memo1: TMemo; 
    BitBtn1: TBitBtn; 
    BitBtn2: TBitBtn; 
    procedure FormCreate(Sender: TObject); 
    procedure BitBtn1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
var 
  Form1: TForm1; 
  xn,xk,e : extended; 
  m : word; 
implementation 
{$R *.dfm} 
  
function sx(x:extended):extended; 
var a,n,s : extended; 
     k : integer; 
begin 
    k:=-1;  a:=1;  n:=0; s:=1; 
  try 
         while (abs(a) > e) do begin 
              n:=n+1; 
              a:=-a*x/n;    
              s:=s+a; 
           end; 
       Result:=s; 
   except 
on EInvalidOp do   
               k:=MessageDlg('Неправильная операция с плавающей точкой. ’+  
                                        ’ Продолжить вычисления?',mtError,[mbYes,mbNo],0); 
on EOverFlow do  
               k:=MessageDlg('Переполнение при выполне-нии операции с’+ 
      ’ плавающей точкой! Продолжить вычисления?',mtError,[mbYes,mbNo],0); 
      else  
               k:=MessageDlg('Возникла неизвестная исключительная ситуация!’+ 
                                        ‘ Продолжить вычисления?',mtError,[mbYes,mbNo],0); 
   end; 
     case k of 
      mrYes : Result:=0; 
      mrNo  : Halt(1); 
      end;   
end; 
  
function yx(x:extended):extended; 
begin 
  Result:=exp(-x); 
end; 
  
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  Memo1.Clear; 
  RadioGroup1.ItemIndex:=0; 
    Edit1.Text:='0'; 
    Edit2.Text:='2'; 
    Edit3.Text:='6'; 
    Edit4.Text:='0,001'; 
end; 
  
procedure TForm1.BitBtn1Click(Sender: TObject); 
begin 
  Memo1.Clear; 
        Memo1.Lines.Add('Лаб. раб. №6 ст. гр. 552003 Иванова А.А.'); 
     xn:=StrToFloat(Edit1.Text); 
        Memo1.Lines.Add(' xn='+FloatToStrF(xn,ffFixed,6,2)); 
     xk:=StrToFloat(Edit2.Text); 
        Memo1.Lines.Add(' xk='+FloatToStrF(xk,ffFixed,6,2)); 
     m:=StrToInt(Edit3.Text); 
        Memo1.Lines.Add(' h='+IntToStr(m)); 
     e:=StrToFloat(Edit4.Text); 
        Memo1.Lines.Add(' e='+FloatToStrF(e,ffFixed,8,5)); 
    case RadioGroup1.ItemIndex of 
     0 : begin 
          Memo1.Lines.Add('Расчет S(x)'); 
          Tabl(sx,xn,xk,m,Memo1); 
         end; 
     1 : begin 
          Memo1.Lines.Add('Расчет Y(x)'); 
          Tabl(yx,xn,xk,m,Memo1); 
         end; 
    end; 
end; 
end. 
архив это моя работа:
там надо сделать S(x) Y(X)
срс5.rar
второй архив задание универа 5 работа если я как то не правильно объясняю,
МУ-ЛР-АиОП_5В07030_ИС.rar
Ответить с цитированием