Разработка программы-калькулятора на Delphi - Формирование подмножества натуральных чисел с заданными параметрами — страница 9

  • Просмотров 3683
  • Скачиваний 332
  • Размер файла 430
    Кб

or (StrToInt(Edit1.Text) < 0) then begin ShowMessage(‘Число должно быть меньше 1000000000’); Edit1.SetFocus; end; end; end; end. // NOD_NOK unit DM003Unit; interface uses Windows, Messages, SysUtils, Variants, Classes, 15 Graphics, Controls, Forms,Dialogs, StdCtrls; type TfrmNumer = class(TForm)mmInp: TMemo;lblInp: TLabel;edtNOD: TEdit;edtNOK: TEdit;btnResult: TButton;btnHelp: TButton;lblNOD: TLabel;lblNOK: TLabel;btnToFile: TButton;procedure mmInpKeyPress(Sender: TObject; var Key: Char);procedure btnResultClick(Sender: TObject);procedure mmInpExit(Sender: TObject);procedure mmInpChange(Sender: TObject);procedure btnHelpClick(Sender: TObject);procedure btnExitClick(Sender: TObject);procedure btninfClick(Sender: TObject);procedure

btnToFileClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmNumer: TfrmNumer; implementation uses CreateUnit, HelpUnit; {$R *.dfm} procedure TfrmNumer.mmInpKeyPress(Sender: TObject; var Key: Char); begin if not (Key in [‘0’..’9’, #8,#13,#10]) then begin Key:=#0;Beep;end;end; procedure TfrmNumer.btnResultClick(Sender: TObject); Var Dig: array of integer;I, Max, Min, J, NOD, NOK: integer; P: Int64;Bul:Boolean; beginNOD:=0;NOK:=0;if mmInp.Lines.Count-1<=6 then beginSetlength(Dig,mmInp.Lines.Count); try Dig[0]:=StrToInt(mmInp.Lines[0]); Min:=Dig[0]; Max:=Dig[0]; P:=Dig[0]; For I:=1 to mmInp.Lines.Count-1 do begin Dig[I]:=StrToInt(mmInp.Lines[I]); P:=P*Dig[I]; if Dig[I]Max then Max:=Dig[I]; end; For J:=Min

downto 1 do begin if Min mod j=0 then beginBul:=true;For I:=0 to mmInp.Lines.Count-1 do begin if Dig[I] mod J<>0 then beginBul:=false;Break; end; end; if Bul then begin NOD:=J; Break; end; end; end; J:=Max; While J<=P do begin Bul:=true;For I:=0 to mmInp.Lines.Count-1 do beginif J mod Dig[I]<>0 then beginBul:=false;Break;end;end; if Bul then begin NOK:=J; Break; end; J:=J+Max; end; edtNOD.Text:=IntToStr(NOD); edtNOK.Text:=IntToStr(NOK); // if cbPrint.Checked then begin finally Dig:=nil; end; end else begin MessageDlg(‘Количество чисел должно быть не больше 6’, mtError, [mbOK], 0); end; end; procedure TfrmNumer.mmInpExit(Sender: TObject); var I:integer; begin if (length(mmInp.Lines.Text)>0) and (mmInp.Lines.Count>1)

then beginFor I:=0 to mmInp.Lines.Count-1 do beginif length(mmInp.Lines[I])>0 then beginif StrToInt(mmInp.Lines[I])<1 then begin MessageDlg(‘Число должно быть не меньше 1’, mtError, [mbOK], 0); mmInp.Lines[I]:=’1’; mmInp.SetFocus; break; end;if StrToInt(mmInp.Lines[I])>100000 then begin MessageDlg(‘Число должно быть меньше 100000’, mtError, [mbOK], 0); mmInp.Lines[I]:=’100000’; mmInp.SetFocus; break; end; end else begin MessageDlg(‘Строка должна быть заполнена’, mtError, [mbOK], 0); mmInp.Lines[I]:=’1’; mmInp.SetFocus; break; end end; end; end; procedure TfrmNumer.mmInpChange(Sender: TObject);beginif (length(mmInp.Lines.Text)>0)

and (mmInp.Lines. Count>1)then begin btnToFile.Enabled:=True; btnResult.Enabled:=True; end else begin btnResult.Enabled:=False; btnToFile.Enabled:=False; end; end; procedure TfrmNumer.btnHelpClick(Sender: TObject);begin ShowMessage(‘Эта программа находит НОК и НОД заданной 16 совокупности чисел’+ #13#10 + ‘Для этого в соответсвующем поле введите числа и нажмите “Считать!”.’+ #13#10 + ‘Также можно сохранить результаты в отдельном файле с помощью кнопки “Печать”.’); end; procedure TfrmNumer.btnExitClick(Sender: TObject); begin ((Sender as TButton).Owner

as TForm).Close;end; procedure TfrmNumer.btninfClick(Sender: TObject); var frmCreate: TfrmCreate; beginfrmCreate:=TfrmCreate.Create(Application);tryfrmCreate.ShowModal; finally frmCreate.Free; end;end;procedure TfrmNumer.btnToFileClick(Sender: TObject); var slText: TStringList;tStr: string;i: Integer; beginslText:=TStringList.Create;try tStr:=’×èñëà: ‘; for i:=0 to mmInp.Lines.Count-1 do begin if i>0 then tStr:=tStr+’, ‘; tStr:=tStr+mmInp.Lines[i]; end; slText.Append(tStr); slText.Append(‘НОД=’+edtNOD.Text); slText.Append(‘НОК=’+edtNOK.Text); slText.SaveToFile(‘DM003File.txt’); finally slText.Free;end;end; end. //SuperHorner unit DM005Unit; interface uses Windows, Messages,