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

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

SysUtils, Variants, Classes,Graphics, Controls, Forms,Dialogs, StdCtrls; type TForm2 = class(TForm)Edit1: TEdit;Edit2: TEdit;Label1: TLabel;Label2: TLabel;Button2: TButton;Memo1: TMemo;Button1: TButton;procedure Edit1KeyPress(Sender: TObject; var Key: Char);procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Edit2KeyPress(Sender: TObject; varKey: Char);begincase Key of‘0’..’9’: ;#8 : ; // #13 : Button2.SetFocus; // 18 else Key :=Chr(0); end;end; procedure TForm2.Button2Click(Sender: TObject); var a,b,t:integer;begin a := StrToInt(Edit1.Text);

b := StrToInt(Edit2.Text); if b<=0 then begin ShowMessage(‘Знаменатель должен быть больше 0’); end else begin memo1.text := ‘ [ ‘; while (a mod b>0) dobeginmemo1.text := memo1.text + IntToStr(a div b)+ ‘, ‘; a:=a mod b;t:=b;b:=a; a:=t;end; memo1.text := memo1.text + IntToStr(a div b)+ ‘ ]’; end; end; procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of‘0’..’9’: ;#8 : ; // #13 : Edit2.SetFocus; // else Key :=Chr(0); end; end; procedure TForm2.Button1Click(Sender: TObject); begin ShowMessage(‘Эта программа преобразовывает обычныедроби в цепные.’+ #13#10 + ‘Для этого в

соответсвующих полях введите числитель и знаменатель.’ + #13#10 +’и нажмите “Считать!”.’); end; end. // Antiexpressor unit DM008Unit; interface uses Windows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,Dialogs, StdCtrls; type TAntiexpressor = class(TForm) Label1: TLabel; Help: TButton; Run: TButton; mmInp: TMemo; Memo1: TMemo; edtPower: TEdit; Label2: TLabel; Label3: TLabel; procedure Memo1KeyPress(Sender: TObject; var Key: Char);procedure edtPowerKeyPress(Sender: TObject; var Key: Char); procedure RunClick(Sender: TObject); procedure HelpClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Antiexpressor: TAntiexpressor;

implementation {$R *.dfm} uses HelpUnit, CreateUnit; procedure TAntiexpressor.edtPowerKeyPress(Sender: TO- bject; var Key: Char); begin case Key of‘0’..’9’: ;#8 : ; // #13 : Memo1.SetFocus; // else Key :=Chr(0);end; end; procedure TAntiexpressor.Memo1KeyPress(Sender: TObject; var Key: Char);beginif not (Key in [‘0’..’9’, #8, #13]) then beginKey:=#0; Beep; end; end; procedure TAntiexpressor.RunClick(Sender: TObject); var s: array [0..100] of integer; a,b,t, i, n, j:integer; bul:boolean; begin Memo1.Lines.Clear; n:=StrToInt(edtPower.Text); for i:=0 to n-1 do begins[i]:=StrToInt(mmInp.Lines[i]);end; for j:= 1 to n-1 do begin if StrToInt(mmInp.Lines[j])<=0 then begin bul:=false; MessageDlg(‘Элементы цепной

дроби, кроме первого,должны быть>0’, mtError, [mbOK], 0); mmInp.SetFocus; break; end else begin bul:=true; a:=1; b:=s[n-1]; for i:= n-1 downto 1 do begin 19 t:=s[i-1]*b+a; a:=b; b:=t; end; // memo1.text:=memo1.Text+ #13#10+IntToStr(b) + ‘ / ‘+ IntToStr(a);end; end;if bul then memo1.text:=memo1.Text+ #13#10+IntToStr(b) + ‘ / ‘+ IntToStr(a)else memo1.Text:=’ ‘;end; procedure TAntiexpressor.HelpClick(Sender: TObject);begin ShowMessage(‘Эта программа переводит цепные дроби вобыкновенные’+ #13#10 + ‘Для этого введите элементы цепной дроби и нажмите “Считать!”.’); end; end.