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

помогите доделать программу по паскалю пожалуйста

4.Составьте программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр (используя процедуры или функции). надо создать счетчик который считает количество заходов и количество делений и на основании этого судить о числах делящихся на каждую из своих цифр....помогите пожалуйста. как это сделать??? program Project7; {$APPTYPE CONSOLE} uses SysUtils; Var i, N :integer; function delenie(x:integer): integer; Var a:integer; begin while x <> 0 do begin a:=x mod 10; if (x mod a =0) then x := x div 10; end; end; begin write('vvedite chislo N '); readln(N); for i:=1 to N do write(delenie(i)); readln; { TODO -oUser -cConsole Main : Insert code here } end.
Var i, N :integer;
function delenie(x:integer): boolean;
Var
a:integer;
rez : boolean;
begin
rez := true;
while x <> 0 do
begin
a:=x mod 10;
if a=0 then begin rez:=false; break end;
if (x mod a <>0) then begin rez:=false; break end;
x := x div 10;
end;
delenie:= rez;
end; {конец функции}
begin
write('vvedite chislo N ');
readln(N);
for i := 1 to N do
if delenie ( i ) then write ( i, ' ');

end.
PI
Paren' Iz B.r.g
56 353
Лучший ответ
uses crt;
var n,i,m:integer;
c,kd,kc,f:byte;
begin
clrscr;
writeln('Введите число n=');
readln(n);
writeln('Числа делятся на все свои цифры: ');
for i:=1 to n do
begin
m:=i;
kd:=0;
kc:=0;
while m>0 do
begin
c:=m mod 10;{цифры}
kc:=kc+1;{их общее количество}
if (c <> 0) and (i mod c=0)then{если цифра не ноль и делит}
kd:=kd+1;{количество делителей}
m:=m div 10;
end;
if kd=kc then write(i,' ');
end;
readln
end.

Можно еще так, используя функцию

uses crt;
function DelCif(x:longint):boolean;
var y:longint;
k:byte;
begin
DelCif:=true;
y:=x;
while y <> 0 do
begin
k:=y mod 10;
if (k=0)or(x mod k <> 0)then
begin
DelCif:=false;
break;
end;
y:=y div 10;
end;
end;
var n,i,k:longint;
begin
clrscr;
write('Введите N=');
readln(n);
writeln('Числа делятся на все свои цифры: ');
for i:=1 to n do
if DelCif(i) then
begin
write(i,' ');
k:=k+1;
end;
readln;
end.
Wakir Dibirov
Wakir Dibirov
41 962