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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2011, 00:01   #1
nikit6
 
Регистрация: 17.04.2011
Сообщений: 2
По умолчанию делители числа n (Delphi)

Дано целое число n. Требуется найти количество его делителей, не считая 1 и само число n. В программе должна быть функция, возвращающая количество делителей числа n.
nikit6 вне форума Ответить с цитированием
Старый 18.04.2011, 00:34   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Код:
TIntegerArray = array of Integer;
.......................................................
function GetN(N: Integer): TIntegerArray;
var
  I: Integer;
begin
  SetLength(Result, 0);
  for I := 2 to N - 1 do
  begin
    if (N mod I) = 0 then
    begin
      SetLength(Result, Length(Result) + 1);
      Result[High(Result)] := I;
    end;
  end;
end;

function GetCount(Arr: TIntegerArray): Integer;
begin
  Result := Length(Arr);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Arr: TIntegerArray;
begin
  Arr := GetN(20);
end;
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 18.04.2011, 10:19   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Всё так. Только
Код:
...
  for I := 2 to (N div 2) do
...
Sibedir вне форума Ответить с цитированием
Старый 18.04.2011, 23:14   #4
nikit6
 
Регистрация: 17.04.2011
Сообщений: 2
По умолчанию

Простите пожалуйста, не понимаю в какой переменной ответ. Плюс, n надо прочитать в одном файле (.txt), а вывести в другом (тоже .txt). Заранее спасибо.
nikit6 вне форума Ответить с цитированием
Старый 19.04.2011, 05:49   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Результатом тут является массив делителей (TIntegerArray). Его длина - и есть ваш ответ.
Вообще, если нужно просто кол-во делителей, то записывать их в массив не обязательно. Достаточно просто завести счётчик и увеличивать его при каждом нахождении нового делителя.

Цитата:
Плюс, n надо прочитать в одном файле (.txt), а вывести в другом (тоже .txt). Заранее спасибо.
Тут уместно было бы сказать: Один вопрос - одна тема. Но, кажись, уместнее сказать: обсуждалось более 9000 раз

Последний раз редактировалось Sibedir; 19.04.2011 в 05:54.
Sibedir вне форума Ответить с цитированием
Старый 19.04.2011, 15:31   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
program Project3;
uses
  SysUtils;
 var n:Integer;
 f:TextFile;
   function count(n:integer):Integer;
  var i:Integer;
  begin
  result:=0;
    for i := 2 to n div 2 do
     if n mod i =0 then result:=result+1;
  end;
begin
  { TODO -oUser -cConsole Main : Insert code here }
 Assignfile(f,'c:\data.txt');
 Reset(f);
 read(f,n);
 Closefile(f);
 Assignfile(f,'c:\res.txt');
 Rewrite(f);
 write(f,count(n));
 Closefile(f);
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Найти все делители числа N torah Помощь студентам 0 24.11.2010 10:37
Найти все делители числа N torah Помощь студентам 33 06.11.2010 00:15
Разложение числа на простые делители PROFI_I Общие вопросы Delphi 2 09.12.2008 18:17