Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

768

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

343

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Мастер-Эксперт

209

Беларусь, Минск


ID: 137394

Megaloman

Мастер-Эксперт

158

Беларусь, Гомель


ID: 400815

alexleonsm

6-й класс

130


ID: 400669

epimkin

Профессионал

120


8.8.15

09.05.2021

JS: 2.8.21
CSS: 4.5.5
jQuery: 3.6.0
DataForLocalStorage: 2021-05-15 03:46:17-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 200334

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Ericsson (Посетитель)
Дата: 27.02.2021, 02:38 Консультация закрыта
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:
Дано число N (> 1) и последовательность из 15 целых положительных чисел. Определить является ли какое-нибудь из этих чисел степенью числа N. Число N вводить с клавиатуры, последовательность задавать случайным образом в диапазоне от 4 до 100 (Описать функцию, определяющую степень числа N в данной последовательности).
delphi

Ответ # 280788 от puporev
Здравствуйте, Ericsson!
Можно написать так.
Код
const m=15;
var
  Form1: TForm1;
  a:array[1..m]of integer;
implementation

{$R *.dfm}
function step_N(a,n:integer):boolean;
var k:integer;
begin
k:=1;
while k<a do k:=k*n;
step_N:=k=a;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
randomize;
Label3.Caption:='';
for i:=1 to m do
 begin
  a[i]:=4+random(97);
  Label3.Caption:=Label3.Caption+' '+inttostr(a[i]);
 end;
ShowMessage('Введите степень');
end;

procedure TForm1.Button2Click(Sender: TObject);
var n,k,i:integer;
    b:array[1..m] of  integer;
begin
if not TryStrToInt(Edit1.Text,n)or(n<2) then
 begin
  ShowMessage('Введите степень целое число больше 1');
  Edit1.Clear;
  Edit1.SetFocus;
  exit;
 end;
k:=0;
for i:=1 to m do
if step_N(a[i],n) then
 begin
  k:=k+1;
  b[k]:=a[i];
 end;
if k=0 then Label4.Caption:='Степеней числа '+inttostr(n)+' нет'
else
 begin
  Label4.Caption:='Степени числа '+inttostr(n)+' есть это:';
  for i:=1 to k do
  Label4.Caption:=Label4.Caption+' '+inttostr(b[i]);
 end;

end;

Во вложении предлагаемый вид формы.

puporev

Профессор
27.02.2021, 08:04
5
Мини-форум консультации # 200334

Нет сообщений в мини-форуме

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

puporev

Профессор

Рейтинг: 111

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 74

Степанов Иван /REDDS

4-й класс

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0