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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2009, 12:09   #1
Серафимий Долговяз
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 18
Восклицание Степень числа

С экрана вводятся два числа: N и A;N в диапозоне от 2 до maxint и A в диапозоне от 2 до N-1.Написать процедуру, которая будет определять является ли N степенью числа A.
Заранее спасибо
Серафимий Долговяз вне форума Ответить с цитированием
Старый 23.02.2009, 13:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и в чем траблы? вручную как такое считается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2009, 13:32   #3
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Вот держи:

Код:
uses Math;

{$R *.dfm}

procedure Tform_Test.btn_IsPowClick(Sender: TObject);

resourcestring
  const_msg_Err = 'Число "%d" не входит в допустимыый диапазон значений';
  const_msg_Yes = 'Число "%d" является степенью числа "%d"';
  const_msg_No  = 'Число "%d" не является степенью числа "%d"';

  function IsPow(A, N: Integer): Boolean;
  var
    Max, i, OldA: Integer;
  begin
    Result := False;
    Max := MaxInt;
    OldA := A;
    if not (N in [2..Max]) then
      raise Exception.CreateRes(@const_msg_Err);
    if not (A in [2..N - 1]) then
      raise Exception.CreateRes(@const_msg_Err);
    i := 1;
    while A <> N do begin
      A := Round(Power(OldA, i));
      Result := A = N;
      if A > N then
        Exit;
      Inc(I);
    end;
  end;

var
  A, N: Integer;
begin
  A := 2;
  N := 4;
  if IsPow(A, N) then
    ShowMessageFmt(const_msg_Yes, [N, A])
  else
    ShowMessageFmt(const_msg_No, [N, A]);
end;
NieL вне форума Ответить с цитированием
Старый 26.02.2009, 07:09   #4
Курсант
 
Регистрация: 21.02.2009
Сообщений: 3
По умолчанию

Проверки значений N и А писать лениво, и экранный ввод тоже.. Сам смогешь переделать? Работает - тестировал.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var N, A : integer;
    Result : Boolean;
begin
   N := StrToInt (Edit1.Text);
   A := StrToInt (Edit2.Text);
   Result := true;
   repeat
      if N mod A <> 0 then Result := false;
      N := N div A;
   until (Result=false) or (A=1);
   If Result Then Button1.Caption := 'Является' else Button1.Caption := 'Не является';
end;
Курсант вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возведение числа в степень Gross Общие вопросы Delphi 8 25.12.2008 19:37
Возведение числа в степень Roberto Помощь студентам 9 05.04.2008 09:50