Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2012, 11:46   #1
*cash*
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 25
По умолчанию Найти числа делящиеся на каждую из своих цифр через реккрсию

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр. Описать и использовать рекурсивную процедуру.
*cash* вне форума Ответить с цитированием
Старый 14.04.2012, 12:23   #2
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

если правильно понял то это оно должно быть
Код:
var
i:integer;
n,kol:integer;
begin
n:=strtoint(Edit1.Text);
For i:=1 to n Do
if(n mod i=0) then kol:=kol+1;
Edit2.Text:=inttostr(kol);
end;
qpuTuJlb вне форума Ответить с цитированием
Старый 14.04.2012, 12:30   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
если правильно понял то это оно должно быть
нет, Вы поняли НЕПРАВИЛЬНО!

у Вас НЕТ рекурсии вообще.

да и вообще решение неверное, Вы не ищите нужные числа!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.04.2012, 12:32   #4
*cash*
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 25
По умолчанию

Я вот написал код. Все работает и правильно показывает, но если я задаю n больше 100, она вылетает. Причем при 100 еще работает, 101 уже нет (((
Код:
uses
  SysUtils;

procedure rec (const n:byte; i:byte);
var  x:byte;  v:boolean;
begin
If i<>n then
begin
v:=true;
inc(i);
if  (i mod 10 <> 0) then
begin
x:=i;
while x<>0 do
     begin
     if (i mod (x mod 10)=0) then
     else v:=false;
     x:=x div 10;
     end;
end
          else v:=false;
if v=true then writeln (i);
rec (n,i);
end;

end;


var  i:byte;
const n=100;
begin
i:=0;
rec(n,i);
readln;
end.
*cash* вне форума Ответить с цитированием
Старый 14.04.2012, 12:53   #5
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от *cash* Посмотреть сообщение
Я вот написал код. Все работает и правильно показывает, но если я задаю n больше 100, она вылетает. Причем при 100 еще работает, 101 уже нет (((
поэтому та рекурсия вещь хорошая но в меру - стек переполняет быстро...
push&pop
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 14.04.2012, 12:56   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  n = 1000;

var i: integer;

procedure checker(a, b: integer);
begin
  if b = 0 then
    writeln(a)
  else
    if b mod 10 <> 0 then
    begin
      if a mod (b mod 10) = 0 then
        checker(a, b div 10);
    end
    else
      checker(a, b div 10);
end;

begin
  for i := 1 to n do
  begin
    checker(i, i);
  end;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 14.04.2012 в 13:08.
BDA на форуме Ответить с цитированием
Старый 14.04.2012, 19:03   #7
*cash*
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 25
По умолчанию

А глубина рекурсии будет равна n?
*cash* вне форума Ответить с цитированием
Старый 14.04.2012, 19:44   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Глубина рекурсии в моем коде равна количеству цифр в обрабатываемом числе.
Цикл "прогоняет" все числа от 1 до n и для каждого вызывает рекурсивную проверку.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все слова-числа, т.е. такие, которые состоят только из цифр. Известно, что количество цифр в каждом числе не более 9 (девяти vikichocolate Помощь студентам 1 21.12.2011 00:12
Найти все трехзначные числа, представимые в виде сумм факториалов своих цифр (программа в VBA) Jeene Помощь студентам 0 18.04.2011 02:14
все натуральные числа не превосходящие заданное число N и равное сумме кубов своих цифр. Julila Помощь студентам 42 03.03.2011 00:38
Вывод чисел, делящихся на каждую из своих цифр. Паскаль ЯншинаВера Помощь студентам 3 08.04.2008 11:50