Другие языки программирования и технологии

Задача по 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 { найдено число }
VV
Vasia Vasia
62 867
Лучший ответ
Рабочий код, правда на 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.
А!
Арман !
2 160