Другие языки программирования и технологии
помогите решить задачу по паскалю не знаю как делать вообще
Составьте программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр (используя процедуры или функции).
Надо еще проверить, что если в числе есть цифра 0, то такое число не подходит, так как на 0 делить нельзя.
Вообщем, вот вам работающая программа с функцией, которая проверяет, делится ли число на каждую свою цифру (кроме 0). А программа выдает все такие числа от 1 до N.
program aaa;
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) or (x mod a <>0) then begin rez := False; Break; end;
x := x div 10; {отбрасываем последнюю цифру}
end;
delenie:=rez;
end; {конец функции}
begin
write('Введите число N ');
readln(N);
for i:=1 to N do
begin
if delenie(i) then write(i, ' ');
end;
end.
Вообщем, вот вам работающая программа с функцией, которая проверяет, делится ли число на каждую свою цифру (кроме 0). А программа выдает все такие числа от 1 до N.
program aaa;
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) or (x mod a <>0) then begin rez := False; Break; end;
x := x div 10; {отбрасываем последнюю цифру}
end;
delenie:=rez;
end; {конец функции}
begin
write('Введите число N ');
readln(N);
for i:=1 to N do
begin
if delenie(i) then write(i, ' ');
end;
end.
Просто ее делать.
Цикл от 1 до n. На каждой итерации цикла делаете предположение, что очередное число делится на свои цифры, а затем проверяете это. Если при проверке предположение не подтверждается, то переходите к следующему числу, а если число прошло проверку, то выводите его.
for i:=1 to N do begin
m := i;
IsOk := True;
while m > 0 do begin
if i div (m mod 10) <> 0 then begin IsOk := False; Break; end;
m := m div 10;
end;
if IsOk then WriteLn(i);
end;
Примерно так...
Цикл от 1 до n. На каждой итерации цикла делаете предположение, что очередное число делится на свои цифры, а затем проверяете это. Если при проверке предположение не подтверждается, то переходите к следующему числу, а если число прошло проверку, то выводите его.
for i:=1 to N do begin
m := i;
IsOk := True;
while m > 0 do begin
if i div (m mod 10) <> 0 then begin IsOk := False; Break; end;
m := m div 10;
end;
if IsOk then WriteLn(i);
end;
Примерно так...
На мыло напиши, могу помочь
Похожие вопросы
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу в паскале
- Помогите решить задачу на паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите решить задачу в паскале
- Помогите решить задачу (в паскале)!
- Помогите решить задачу в паскале, пожалуйста! !
- помогите решить задачу на паскале