Ответы 1
Вот пример кода на языке C, который решает вашу задачу:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void check_powers_of_two(int *arr, int size) {
for (int i = 0; i < size; i++) {
int num = arr[i];
if (num > 0 && ((num & (num - 1)) == 0)) {
printf("%d ", num);
}
}
}
int main() {
int n;
printf("Enter the size of the array: ");
scanf("%d", &n);
int *arr = (int*) malloc(n * sizeof(int));
srand(time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 10000 - 5000;
}
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Powers of 2 in the array: ");
check_powers_of_two(arr, n);
free(arr);
return 0;
}
```
Объяснение кода:
- Сначала мы объявляем функцию `check_powers_of_two`, которая принимает массив и его размер, проходится по элементам массива, и если элемент является положительной степенью двойки, то он распечатывается на экране.
- Затем мы объявляем функцию `main`. Сначала она запрашивает у пользователя размер массива `n`. Затем мы выделяем память для массива `arr` с помощью функции `malloc`. Затем мы заполняем массив случайными числами с помощью функции `rand`.
- Мы выводим на экран исходный массив, затем вызываем функцию `check_powers_of_two`, чтобы распечатать положительные степени двойки в массиве.
- Наконец, мы освобождаем выделенную память с помощью функции `free`.
Обратите внимание, что я использовал функцию `rand()` для генерации случайных чисел. Чтобы генерация была по-настоящему случайной, необходимо установить начальное значение генератора случайных чисел с помощью функции `srand()` и передать ей текущее время в качестве аргумента.
ответы на свои вопросы
вопросы?