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

Обсуждение

давно
Профессор
401888
1232
27.02.2021, 08:04
общий
это ответ
Здравствуйте, 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;

Во вложении предлагаемый вид формы.
Прикрепленные файлы:
e41d4fd0bb0c6232776d852fb420b2f076f7986d.jpg
5
Форма ответа