![]() |
![]() |
Категории: АстрономияБиология География Другие языки Интернет Информатика История Культура Литература Логика Математика Медицина Механика Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Транспорт Физика Философия Финансы Химия Экология Экономика Электроника |
Нахождение факториала циклом и рекурсиейЛабораторная работа №2 Возведение в степень и нахождение факториала Дано число в степени вычислить число, полученое возведением данного числа в степень и вычислить сумму разрядов полученого числа. Например: число 5 в степени 3 равно 125, а сумма разрядов полученого числа будет равна 1+2+5=8.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) BitBtn1: TBitBtn; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); var n,m,stepen,dlina,summa:int64; i:integer; s:string; begin n:=strtoint(inputbox('','Введите чисто,возводимое в степень','')); m:=strtoint(inputbox('','Введите степень в которую необходимо возвести число','')); stepen:=n; // переменная stepen будет показывать чему равно число n в степени m for i:=1 to m-1 do stepen:=stepen*n; // вычисление числа в степени dlina:=length(inttostr(stepen)); // вычисление длинны полученного числа label2.Caption:='Число '+inttostr(n)+' в степени '+inttostr(m)+' = '; label4.Caption:=inttostr(stepen); summa:=0; for i:=1 to dlina do begin summa:=summa+strtoint(copy(inttostr(stepen),i,1)); // в цикле берутся поочередно символы полученного числа и складываются end; label1.Caption:=inttostr(summa); // вывод результата end; end.
Дополнительно: Объединить в одну общую программу нахождение степени произвольного числа, нахождение факториала циклом и через рекурсию. При загрузке программы должна появляться загрузочная форма с приветствием. Организовать в программе меню с такими пунктами: Файл: выход, Вычисление: степень, факториал циклом, факториал рекурсией. При выборе подпункта из пункта меню Вычисление на форме появляется соответствующее действие названию пункта.
Нахождение факториала циклом и рекурсией
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Button1: TButton; Label3: TLabel; procedure Button1Click(Sender: TObject); var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i,fact:integer; begin fact:=1; for i:=1 to strtoint(Edit1.Text) do begin fact:=fact*i; end; Label3.Caption:='факториал='+floattostr(fact); end; end.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Button1: TButton; Label3: TLabel; procedure Button1Click(Sender: TObject); var Form1: TForm1; function factor(N:integer):real; implementation function factor(N:Integer):real; begin if N=1 then Result:= 1 else Result:= N*factor(N-1); end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Label3.Caption:=Floattostr(factor(strtoint(Edit1.Text))); end;
end.
|