-Цитата от Baddogg
-Цитата от Hammer
-Цитата от Baddogg
2) Используя функцию, составить программу определения чисел, являющихся степенями 2, в ряду a1, a2, ... ,aN. N - натуральное число.
Полным перебором решил.
Максимальное кол-во элеменентов взял за 10.
Код:
var
i, j, x: integer;
mas: array[1..10] of integer;
function Degree(a,b,c:integer):longint;
var r:longint;
begin
r:=1;
while b>0 do begin
r:=r*a;
b:=b-1;
if r > c then
break;
end;
Degree:=r;
end;
begin
writeln('Введите числа (10 шт):');
for i:=1 to 10 do
read(mas[i]);
for i:=1 to 10 do
for j:=1 to maxint do
begin
x:= Degree(j, 2, mas[i]);
if mas[i] = x then
write(mas[i], ' ');
end;
readln;
end.
все бы хорошо, да только N (макс кол-во эл-тов) с клавы нужно ввести. пробовал массив сделать от 1 до N пишет ошибку. чет не знаю в чем дело. и еще че значит break?)
Держи.
Код:
var
i, j, n, x: integer;
mas: array[1..100] of integer;
function Degree(a,b,c:integer):longint;
var r:longint;
begin
r:=1;
while b>0 do begin
r:=r*a;
b:=b-1;
if r > c then
break;
end;
Degree:=r;
end;
begin
writeln('Ввелите кол-во элементов (максимум 100):');
readln(n);
writeln('Введите числа');
for i:=1 to n do
read(mas[i]);
for i:=1 to n do
for j:=1 to maxint do
begin
x:= Degree(j, 2, mas[i]);
if mas[i] = x then
write(mas[i], ' ');
end;
readln;
end.
Проверяй, а то я не компилировал.
break - остановка цикла.