Показать сообщение отдельно
Hammer
48 61 6D
Аватар для Hammer
Сообщения: 3,305
Регистрация: 05.10.2006
Откуда: Нижневартовск
Старый пост, нажмите что бы добавить к себе блог 27 декабря 2009, 16:12
  #301 (ПС)
-Цитата от 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 - остановка цикла.

offline
Ответить с цитированием