Нахождение факториала циклом и рекурсией

Лабораторная работа №2

Возведение в степень и нахождение факториала

Дано число в степени вычислить число, полученое возведением данного числа в степень и вычислить сумму разрядов полученого числа. Например: число 5 в степени 3 равно 125, а сумма разрядов полученого числа будет равна 1+2+5=8.

Нахождение факториала циклом и рекурсией - student2.ru

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.

Нахождение факториала циклом и рекурсией - student2.ru

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.

Наши рекомендации