Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Menus;
- type
- TForm1 = class(TForm)
- Condition: TLabel;
- Range: TLabel;
- Button1: TButton;
- Result: TLabel;
- ProgressBar1: TProgressBar;
- MainMenu1: TMainMenu;
- PopupMenu1: TPopupMenu;
- SaveDialog1: TSaveDialog;
- N1: TMenuItem;
- N2: TMenuItem;
- N3: TMenuItem;
- N4: TMenuItem;
- procedure Button1Click(Sender: TObject);
- procedure N4Click(Sender: TObject);
- procedure N3Click(Sender: TObject);
- procedure N2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- Type
- TArr = Array Of Integer;
- var
- Form1: TForm1;
- Arr : TArr;
- Save, Path : String;
- IsFileOpen : Boolean;
- implementation
- {$R *.dfm}
- Function FindSumOfDivisors(Number : Integer) : Integer;
- Var
- Sum : Integer;
- Lim : Integer;
- I : Integer;
- Begin
- Sum := 0;
- Lim := Number div 2;
- For I := 1 to Lim do
- If (Number mod I = 0) then
- Sum := Sum + I;
- FindSumOfDivisors := Sum;
- End;
- procedure TForm1.Button1Click(Sender: TObject);
- Var
- I, J, Proc, Counter : Integer;
- Arr : TArr;
- Const
- MAX : Integer = 100000;
- Begin
- Button1.Visible := False;
- ProgressBar1.Visible := True;
- SetLength(Arr, MAX);
- For I := 0 to High(Arr) do
- Begin
- Arr[I] := FindSumOfDivisors(I);
- Proc := ((I * 100) div MAX - 1);
- ProgressBar1.Position := Proc;
- Application.ProcessMessages;
- End;
- Counter := 0;
- For I := 0 to High(Arr) do
- Begin
- For J := I + 1 to High(Arr) do
- Begin
- If ((Arr[I] = J) and (Arr[J] = I)) then
- Begin
- If Counter = 0 then
- Result.Caption := ' ' + Result.Caption + IntToStr(I) + ' и ' + IntToStr(J) + #13#10;
- If (Counter < 5) and (Counter <> 0) then
- Result.Caption := Result.Caption + ' ' + IntToStr(I) + ' и ' + IntToStr(J) + #13#10;
- If (Counter > 4) then
- Result.Caption := Result.Caption + IntToStr(I) + ' и ' + IntToStr(J) + #13#10;
- Inc(Counter);
- End;
- End;
- Proc := ((I * 100) div MAX - 1);
- ProgressBar1.Position := Proc;
- Application.ProcessMessages;
- End;
- ProgressBar1.Position := 100;
- Save := 'Все пары дружественных чисел до 100 000:' + #13#10 + Result.Caption;
- N2.Enabled := True;
- End;
- Function Open (): String;
- Begin
- With Form1 Do
- Begin
- If SaveDialog1.Execute Then
- Begin
- Path := SaveDialog1.FileName;
- IsFileOpen := True;
- End
- Else
- IsFileOpen := False;
- End;
- Open := Path;
- End;
- procedure TForm1.N2Click(Sender: TObject);
- Var
- FileOutput: TextFile;
- IsCorrect : Boolean;
- begin
- IsCorrect := True;
- Path := Open;
- If (IsFileOpen) Then
- Begin
- try
- AssignFile(FileOutput, Path);
- Rewrite(FileOutput);
- Write(FileOutput, Save);
- except
- IsCorrect := False;
- Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
- end;
- if IsCorrect then
- Begin
- Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
- CloseFile(FileOutput);
- End;
- End;
- end;
- procedure TForm1.N3Click(Sender: TObject);
- begin
- Application.MessageBox('Два числа называются дружественной парой, если они имеют одинаковую сумму всех своих делителей, которая равна сумме этих чисел.'#13#10'P.S. Для ускорения работы программы включите режим максимальной производительности и выключите энергосбережение (на ноубуке).', 'Инструкция', 0);
- end;
- procedure TForm1.N4Click(Sender: TObject);
- begin
- Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement