Другие языки программирования и технологии
Задача по Delphi
Натуральное число, в записи которого n цифр, называется числом Армстронга. Число Армстронга - натуральное число, которое равно сумме своих цифр, возведенных в степень, равную количеству его цифр. Получить все числа Армстронга для n=3 и n=4 Напишите, пожалуйста, код Delphi. В гугле уже обыскался ее искать.
function NumLen(N : Integer) : Integer; { Функция возвращающая количество цифр в заданном числе }
var L : Integer; begin L := 0; while N <> 0 do begin Inc(L); N := N div 10; end; NumLen := L; end;
function Armstrong(N : Integer) : Boolean; { Функция возвращает истину, если число является числом Армстронга }
var N0, S, P : Integer; begin N0 := Abs(N); S := 0; P := NumLen(N); while N <> 0 do begin Inc(S, Power(N mod 10, P)); N := N div 10; end; Armstrong := S = N0; end;
…
{ Поиск чисел при n=3 } n := 3; for Num := Power(10, n) to Power(10, n+1) - 1 do if Armstrong(Num) then { найдено число }
…
{ Поиск чисел при n=4 } n := 4; for Num := Power(10, n) to Power(10, n+1) - 1 do if Armstrong(Num) then { найдено число }
…
var L : Integer; begin L := 0; while N <> 0 do begin Inc(L); N := N div 10; end; NumLen := L; end;
function Armstrong(N : Integer) : Boolean; { Функция возвращает истину, если число является числом Армстронга }
var N0, S, P : Integer; begin N0 := Abs(N); S := 0; P := NumLen(N); while N <> 0 do begin Inc(S, Power(N mod 10, P)); N := N div 10; end; Armstrong := S = N0; end;
…
{ Поиск чисел при n=3 } n := 3; for Num := Power(10, n) to Power(10, n+1) - 1 do if Armstrong(Num) then { найдено число }
…
{ Поиск чисел при n=4 } n := 4; for Num := Power(10, n) to Power(10, n+1) - 1 do if Armstrong(Num) then { найдено число }
…
Рабочий код, правда на Lazaruse.
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, sysutils, math
{ you can add units after this };
VAR
n:Integer;
function isamstr(r:Integer):Boolean;
var
n, f:Integer;
begin
f:=0;
for n:=1 to Length(IntToStr(r)) do
f:=f+round(power(
StrToInt(Copy(IntToStr(r),n,1))
,Length(IntToStr(r))));
Result:=(f=r);
end;
function armstr(r:Integer):String;
var
a:Integer;
n,m,f:Integer;
begin
Result:='';
for m:=round(power(10,(r-1))) to round(power(10, r))-1 do
begin
if isamstr(m) then
Result:=Result+(IntToStr(m))+', ';
end;
end;
begin
ReadLn(n);
WriteLn(armstr(n));
ReadLn;
end.
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, sysutils, math
{ you can add units after this };
VAR
n:Integer;
function isamstr(r:Integer):Boolean;
var
n, f:Integer;
begin
f:=0;
for n:=1 to Length(IntToStr(r)) do
f:=f+round(power(
StrToInt(Copy(IntToStr(r),n,1))
,Length(IntToStr(r))));
Result:=(f=r);
end;
function armstr(r:Integer):String;
var
a:Integer;
n,m,f:Integer;
begin
Result:='';
for m:=round(power(10,(r-1))) to round(power(10, r))-1 do
begin
if isamstr(m) then
Result:=Result+(IntToStr(m))+', ';
end;
end;
begin
ReadLn(n);
WriteLn(armstr(n));
ReadLn;
end.
Похожие вопросы
- Задача на Delphi. Аааа решите пожалуйста :'(
- Помогите составить задачу в Delphi
- программисты помогите срочно задача на Delphi
- Помогите пожалуйста с задачей в delphi !
- Помогите составить задачу в Delphi
- Задача на Delphi (сложная)
- Помогите решить задачу в Delphi срочно! буду очень благодарен.
- Помогите плз решить задачу в Delphi.
- Помогите решить задачу на Delphi
- помогите пожалуйста решить задачу по Delphi