
Помогите пожалуйста никак не могу решать.Надо решать в языке С с void ом и arrey ем. Вводится
целое число N. Заполните N-значный массив целыми случайными числами и поместите их в другой массив, если они совпадают с положительной степенью 2, распечатайте на экране. [-4128,1321] вход: N=5, массив={-1024,124, -16,512,996}; выход: {1024,16,512}

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

Вот пример кода на языке 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()` и передать ей текущее время в качестве аргумента.



Конечно, я могу помочь вам с этим заданием на языке C. Вот пример решения:
c#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void findPowerOfTwo(int *array, int size) {
int i;
for (i = 0; i < size; i++) {
if (array[i] > 0 && (array[i] & (array[i] - 1)) == 0) {
printf("%d ", array[i]);
}
}
}
int main() {
int N;
printf("Введите размер массива: ");
scanf("%d", &N);
int *array = (int *)malloc(N * sizeof(int));
int i;
printf("Введите элементы массива:\n");
for (i = 0; i < N; i++) {
scanf("%d", &array[i]);
}
printf("Числа, являющиеся положительными степенями двойки: ");
findPowerOfTwo(array, N);
free(array);
return 0;
}
Программа запрашивает у пользователя размер массива и элементы массива, а затем проверяет каждый элемент массива на то, является ли он положительной степенью двойки. Если элемент соответствует этому условию, он выводится на экран.
Надеюсь, это поможет! Если у вас возникнут дополнительные вопросы, пожалуйста, дайте мне знать.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili