Другие языки программирования и технологии
Пожалуйста! Помогите с Паскалем! Обещаю 10 баллов!
Задача: Дан целочисленный массив {xi}, i = 1, 2, ..n. Напечатать те положительные элементы массива, которые являются степенями двойки (1, 2, 4, 8, ..). Вопрос: С вводом массива все ясно. Какой механизм должен проверять степени двойки? Напишите пожалуйста код этого механизма!
Доброго времени суток.
Механизм простой. Число, являющееся степенью двойки имеет в своей двоичной записи только одну единицу. Надеюсь, объяснять не надо, почему? Отсюда и функция проверки некоторого целого числа
function IsPower2(n: Integer): Boolean;
var C : Integer;
begin
C := 0; {счетчик единиц}
while n > 0 do begin
C := C + (n and 1); {проверяем младший разряд на единицу и суммируем единицы}
n := n shr 1; {сдвигаем число на разряд вправо}
end;
IsPower2 := C = 1; {если единица одна, вернем истину}
end;
Ну а дальше труда представить не должно
if (x[ i ] > 0) and IsPower2(x[ i ]) then печатем
и все это в цикле.
Удачи!
Механизм простой. Число, являющееся степенью двойки имеет в своей двоичной записи только одну единицу. Надеюсь, объяснять не надо, почему? Отсюда и функция проверки некоторого целого числа
function IsPower2(n: Integer): Boolean;
var C : Integer;
begin
C := 0; {счетчик единиц}
while n > 0 do begin
C := C + (n and 1); {проверяем младший разряд на единицу и суммируем единицы}
n := n shr 1; {сдвигаем число на разряд вправо}
end;
IsPower2 := C = 1; {если единица одна, вернем истину}
end;
Ну а дальше труда представить не должно
if (x[ i ] > 0) and IsPower2(x[ i ]) then печатем
и все это в цикле.
Удачи!
Александр Филько
Через функции нельзя писать (препод не разрешает), надо бы через вложенные циклы
Андрей Давыдов
идея красивая))) действительно, так проще)))
Это элементарно
В цикле
if (mass = 2^i) then write(' ', mass);
Пусть надо вычислить X со степенью n.
Function pow(x, n: real) : real;
Begin
pow := exp(n*ln(x));
End;
в программе будет :
if (mass = pow(2, i)) then write(' ', mass);
Надеюсь функции знаешь что такое...
В цикле
if (mass = 2^i) then write(' ', mass);
Пусть надо вычислить X со степенью n.
Function pow(x, n: real) : real;
Begin
pow := exp(n*ln(x));
End;
в программе будет :
if (mass = pow(2, i)) then write(' ', mass);
Надеюсь функции знаешь что такое...
Александр Филько
В Паскале символом ^ степень не ставится!
var
k,o, z:integer;
begin
cls;
write(' введите число '); readln(k);
repeat
o:=k mod 2;
z:= k div 2;
k:= z;
until k<2;
if o=0 then writeln (' stepen') else writeln (' net stepen') ;
end.
у меня все считает.
осталось только запаковать в массив)))
k,o, z:integer;
begin
cls;
write(' введите число '); readln(k);
repeat
o:=k mod 2;
z:= k div 2;
k:= z;
until k<2;
if o=0 then writeln (' stepen') else writeln (' net stepen') ;
end.
у меня все считает.
осталось только запаковать в массив)))
N.u.r.l.a.n -=[A*n*s]=
а оно и не считает все числа(((
Похожие вопросы
- решите плиз задачу на Турбо Паскале дам 10 баллов
- пожалуйста помогите с паскалем)))
- Пожалуйста помогите по паскалю!!!
- Помогите пожалуйста избавиться от "синего экрана смерти"! кто поможет, тому +10 баллов гарантирую!
- Помогите с паскалем. Помогите написать программу переводящую из 10-ой в 16-ую систему счисления на паскале
- даю 10 баллов за задачу в Турбо паскале
- Помогите с паскалем пожалуйста!!!!
- помогите по Delphi (10 баллов)
- Помогите с паскалем
- Сделайте пожалуйста программу на Паскале. Заранее спасибо!!!!