Advertisement
Egor_Vakar

(Delphi) lab 6.2 MainUnit

Apr 27th, 2022
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.54 KB | None | 0 0
  1. unit MainUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Samples.Spin,
  8.   Vcl.ExtCtrls;
  9.  
  10. type
  11.   TMainForm = class(TForm)
  12.     SpinEdit: TSpinEdit;
  13.     InfoLabel: TLabel;
  14.     NumberLabel: TLabel;
  15.     SplittingLabel: TLabel;
  16.     SplittingNumberLabel: TLabel;
  17.     Button: TButton;
  18.     function CountSplits(Number: Integer): Integer;
  19.     procedure SpinEditChange(Sender: TObject);
  20.     procedure ButtonClick(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   MainForm: TMainForm;
  29.  
  30. implementation
  31.  
  32. {$R *.dfm}
  33. uses
  34.     PaintUnit;
  35.  
  36.  
  37. procedure TMainForm.SpinEditChange(Sender: TObject);
  38. begin
  39.     SplittingNumberLabel.Caption := IntToStr(CountSplits(SpinEdit.Value));
  40. end;
  41.  
  42. procedure TMainForm.ButtonClick(Sender: TObject);
  43. begin
  44.     PaintForm.Show;
  45. end;
  46.  
  47. function TMainForm.CountSplits(Number: Integer): Integer;
  48. var
  49.     Matrix: Array of Array of Integer;
  50.     i, j, Splits: Integer;
  51. begin
  52.     SetLength(Matrix, Number + 1, Number + 1);
  53.  
  54.     Matrix[0,0] := 1;
  55.     for i := 1 to Number do
  56.          Matrix[0,i] := 0;
  57.     for i := 1 to Number do
  58.          Matrix[i,0] := 0;
  59.  
  60.     for i := 1 to Number do
  61.         for j := 1 to Number do
  62.             Matrix[i,j] := Matrix[i - 1,j - 1] + j * Matrix[i - 1,j];
  63.  
  64.     Splits := 0;
  65.     for i := 1 to Number do
  66.         Splits := Splits + Matrix[Number, i];
  67.     Result := Splits;
  68. end;
  69.  
  70. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement