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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2009, 19:13   #1
Pascal_User
 
Регистрация: 19.02.2009
Сообщений: 2
По умолчанию Pascal, задачка для 7 класса.

:D
Помогите, немогу решить задачку.
***
Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.
***

Код:
ed:=k mod 10;
if ed<>0 then
   if (i mod ed)=0 then
k:=k div 10;
Это, я так понимаю надо зациклить до того момента пока
Код:
k div 10
не станет равно нулю.
Куча набросков, вобщем, есть и даже рабочая программа, но нерациональная и в три процедуры по-нубски оформлена )
Вобщем как-то так... поделитесь мыслями, кому не трудно.
Начинающий
Pascal_User вне форума Ответить с цитированием
Старый 19.02.2009, 19:28   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот оно. Естественно, деление на ноль (если число =20, 30 и т.п) не производим.
Код:
uses crt;
var
n,i,k,a : integer;
fl : boolean;
begin
clrscr;
write('Enter n: ');
readln(n);
writeln('--------');

for i:=1 to n do
 begin
 fl := true;    { считаем, что условие выполняется (делится на свои цифры) }
 a := i;         { сохраняем число }
 while (a>0) and fl do  { перебираем цифры }
  begin
  k := a mod 10;    { получаем следующую цифру }
  a := a div 10;
  if (k>0) and (i mod k <> 0) then fl:=false;  { если число не делится на нее, то выходим }
  end;
 if fl then writeln(i);  { если условие выполняется - выводим }
 end;

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.02.2009, 19:36   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Код:
program x1;
var
 n,m,k : word;
 i : word;
 flag : boolean;
begin
  write ('Vvedite n: '); readln (n);
  for i:=1 to n do
  begin
    flag:=false;
    m:=i;
    repeat
      k:=m mod 10;
      if (k = 0) or (i mod k <> 0) then
      begin
        flag:=true;
        break
      end;
      m:=m div 10
    until m=0;
    if flag then continue;
    writeln (i)
  end;
  readln
end.
capta1n вне форума Ответить с цитированием
Старый 19.02.2009, 19:46   #4
Pascal_User
 
Регистрация: 19.02.2009
Сообщений: 2
По умолчанию

Спасибо, Boolean тип не додумался использовать.
Ушел учить матчасть =\
Начинающий
Pascal_User вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание своего класса в Delphi 7 - фигуры для шахматной доски electric Компоненты Delphi 18 24.10.2013 15:06
С++ перегрузка операций для шаблонного класса TIN Помощь студентам 7 29.03.2009 15:24
Правильная организация класса для работы с таблицей mysql Choo PHP 10 08.08.2008 08:55
Задачка на Pascal miron Фриланс 9 30.03.2008 15:03
Помогите составить базу данных - задние для 8 класса... Наталья Шварц Microsoft Office Excel 2 14.03.2008 21:33