Вопрос задан 12.07.2023 в 01:43. Предмет Информатика. Спрашивает Nigga Joseph.

Напишите программу, которая вводит натуральное число N и выводит на экран чётные положительные

степени числа 2, не большие, чем 2 N , в порядке убывания. Входные данные Входная строка содержит одно натуральное число N . Выходные данные Программа должна вывести в одну строчку через пробел чётные положительные степени числа 2, не большие, чем 2 N , в порядке убывания. Если таких нет, программа должна вывести число 0. Напишите пожалуйста программу, использую только while, без repeat и until Максимальное количество баллов
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Базаркина Анастасия.

Ответ:Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)

var n,i,m:integer;

flag:boolean;

begin

 readln(n);

 flag:=false;

 if (n mod 2<>0)then i:=n-1 else i:=n;

 while i>0 do begin  

   if power(2,i)<=n then begin

     write(power(2,i),' '); flag:=true;

   end;

   i:=i-2;

end;

if not flag then writeln(0);

end.

Тест №1

1025

1024 256 64 16 4

Тест №2

1

0

Вариант №2

var a,i,n: integer;

begin

 a:=1;readln(n);

 i:=trunc(log2(n)); //получим степень двойки для n

 //если i нечетное,

 //то первое искомое число получаем путем сдвига влево на i-1 в

 //двоичном представлении числа иначе сдвиг на i

 if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;

 //далее получаем числа сдвигая вправо на 2 разряда

 //в двоичном представлении числа

 while a>=2 do begin

   write(a,' ');

   a:=a shr 2;

 end;

end.

Тестовое решение:

2147483647

1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для написания программы с использованием только while и выполнения указанных условий, вам понадобится реализовать логику проверки чётных степеней числа 2 и их вывода. Вот пример такой программы на языке Python:

python
def main(): N = int(input("Введите натуральное число N: ")) power_of_2 = 1 result = [] while power_of_2 <= 2 * N: if power_of_2 % 2 == 0: result.append(str(power_of_2)) power_of_2 *= 2 if result: print(" ".join(result[::-1])) # Выводим в обратном порядке else: print("0") if __name__ == "__main__": main()

Это краткое объяснение кода:

  1. Мы считываем значение N с помощью функции input.
  2. Затем инициализируем переменную power_of_2 со значением 1, которая будет использоваться для вычисления степеней числа 2.
  3. Создаём пустой список result, в который будем добавлять чётные степени числа 2.
  4. Запускаем цикл while, который будет выполняться, пока power_of_2 меньше или равно 2 * N.
  5. Внутри цикла проверяем, является ли power_of_2 чётным числом с помощью операции % (остаток от деления на 2). Если это так, добавляем его в список result.
  6. После каждой итерации цикла увеличиваем значение power_of_2, умножая его на 2.
  7. После выхода из цикла проверяем, содержит ли список result элементы. Если да, выводим их через пробел в обратном порядке с помощью join. Если список пустой, выводим число 0.
0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос