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

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

TfrmDM001.btnExitClick(Sender: TObject);begin((Sender as TButton).Owner as TForm).Close;end; procedure TfrmDM001.mmInpExit(Sender: TObject); var i:integer;begin {For I:=1 to mmInp.Lines.Count do beginif StrToInt(edtLost.Text)>=StrToInt(mmInp.Lines[i]) then beginif (length(edtLost.Text)>0) and(length(mmInp.Lines[i])>0) then beginif StrToInt(edtLost.Text)>=StrToInt(mmInp.Lines[i]) thenedtLost.Text:=IntToStr(StrToInt(mmInp. Lines[i])-1);end;end; } For I:=1 to mmInp.Lines.Count do begin if (length(mmInp.Lines[i])>0) then begin If StrToInt(mmInp.Lines[i])<=0 then begin MessageDlg(‘Делитель должен быть больше 0’, mtError, [mbOK], 0); end; end; end; end; procedure TfrmDM001.mmInpKeyPress(Sender: TObject; var Key: Char); begin if not

(Key in [‘0’..’9’, #8, #13]) then beginKey:=#0;Beep; end;end; end. // Factorizator unit dm002Unit; interface uses Windows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,Dialogs, StdCtrls, Menus; type TForm1 = class(TForm)Edit1: TEdit;Label2: TLabel;Button1: TButton;MainMenu1: TMainMenu;N1: TMenuItem;N2: TMenuItem;Memo1: TMemo;procedure Button1Click(Sender: TObject);procedure Edit1KeyPress(Sender: TObject; var Key: Char);procedure FormCreate(Sender: TObject);procedure N2Click(Sender: TObject);procedure N1Click(Sender: TObject);procedure Edit1Exit(Sender: TObject);//procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation //uses dm002Unit; {$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of‘0’..’9’: ; //#8 : ; // #13 : Button1.SetFocus; else Key :=Chr(0);end; end; 14 procedure TForm1.Button1Click(Sender: TObject); function pow(a,x:longint):longint; var t,i:longint; begin t:=a; for i:=1 to x-1 do t:=t*a; pow:=t; end; {pow} var numb, powers: array [1..100] of integer;ch: integer;c1: longint; n: longint;n1: longint; i: longint;h,k: longint; sum: longint; T:longint; begin memo1.text := ‘ ‘; ch := StrToInt(Edit1.Text); if ch=0 then MessageDlg(‘Число должно быть больше 0’, mtError, [mbOK], 0)else begin c1:=ch; n:= 1; n1:= 0; while ch <> 1 do begin i:= 2; while ch mod i <> 0 do Inc(i); Inc(n1); if n1 = 1 then

begin numb[n]:= i; endpowers[n]:= 1; else if numb[n] = i then Inc(powers[n]) else begin Inc(n); numb[n]:= i; powers[n]:= 1; end; ch:= ch div i; end; memo1.text := memo1.text+ ‘ ‘ + IntToStr(c1)+’ = ‘; k:=1;T:=1;for i:= 1 to n do begin memo1.text := memo1.text+ ‘ ‘ + IntToStr(numb[i])+’^’ + IntToStr(powers[i]);k:=k*((pow(numb[i],powers[i]+1) - 1) div (numb[i] - 1));t:=t*(powers[i]+1);if i <> n then begin memo1.text := memo1.text+ ‘ ‘ +’ * ‘+’ ‘; end; end;memo1.text := memo1.text+ chr(13) + chr(10)+chr(13) + chr(10); memo1.text := memo1.text + ‘ Количество делителей‘ + ‘T(‘ + IntToStr(c1)+’)= ‘+IntToStr(T)+ chr(13) + chr(10)+ chr(13) +

chr(10); memo1.text := memo1.text+ ‘ Множество делителей ‘ + ‘D(‘ + IntToStr(c1)+’)= {‘; for h:=1 to c1 do begin if c1 mod h=0 then beginmemo1.text := memo1.text + ‘ ‘ + IntToStr(h)+’, ‘ ;end;end;memo1.text := memo1.text +’}’+ chr(13) + chr(10)+chr(13) + chr(10); memo1.text := memo1.text+ ‘ Сумма делителей ‘ + ‘S(‘ + IntToStr(c1)+’)= ‘; sum:=0; for h:=1 to c1 do begin if c1 mod h=0 then begin sum:=sum+h; end; end; memo1.text := memo1.text +IntToStr(sum); end; end; procedure TForm1.FormCreate(Sender: TObject); begin memo1.text := ‘’; end; procedure TForm1.N2Click(Sender: TObject); begin ShowMessage(‘МАИ, 3

факультет, 2010 год’+#13#10+’ДМДЗ308.03, гр 03-119, каф 308,’+#13#10+’Студент: Злобин Д.В.,’ +#13#10+ ‘Преподаватель: к.т.н. Гридин.А.Н’); exit; end; procedure TForm1.N1Click(Sender: TObject); begin ShowMessage(‘Эта программа выполняет факторизациючисел, находит все делители числа, их сумму иколичество’+ #13#10 +’Для этого введите число от 1 до 1000000000 в поле и нажмите “Считать!’); end; procedure TForm1.Edit1Exit(Sender: TObject); begin //if (StrToInt(Edit1.Text) <> 0) then begin if (StrToInt(Edit1.Text) > 1000000000)