Составить программу на С++ Не сталкивался с этимхлп

Создать целочисленный массив типа short int размером n. Элементы массива инициализируются по следующему алгоритму:
1) сгенерировать случайное целое число А в диапазоне значений от 10 до 20;
2) используя битовые операции, поменять 2-й бит значением 13-го бита, а у остальных сохранить значения.
3) присвоить преобразованное число А текшему элементу массива.
Инициализированный массив вывести на печать и, используя битовые операции, найти в нём количество чётных элементов.

Создать целочисленный массив типа short int размером n. Элементы массива инициализируются по следующему алгоритму:
1) сгенерировать случайное целое число А в диапазоне значений от 10 до 20;
2) используя битовые операции, поменять 2-й бит значением 13-го бита, а у остальных сохранить значения.
3) присвоить преобразованное число А текшему элементу массива.
Инициализированный массив вывести на печать и, используя битовые операции, найти в нём количество чётных элементов.

stigma70 stigma70    2   17.06.2021 19:10    7

Ответы
Кириджа114 Кириджа114  10.01.2024 15:51
Хорошо, давайте разберемся с поставленной задачей.

Для начала нам нужно создать целочисленный массив типа short int размером n. Для этого объявим переменную n и заполним ее значением. Например, пусть n = 10.

```c++
#include
#include // для функции rand()

int main() {
const int n = 10;
short int arr[n]; // объявляем массив размером n

// ваш код будет здесь

return 0;
}
```

Далее нам необходимо выполнить следующий алгоритм для инициализации элементов массива:

1) Сгенерировать случайное целое число А в диапазоне значений от 10 до 20. Для этого воспользуемся функцией `rand()`, которая генерирует псевдослучайное число. Чтобы получить число в указанном диапазоне, разделим результат на 11 (20 - 10 + 1) и прибавим 10:

```c++
int A = rand() % 11 + 10;
```

2) Используя битовые операции, поменять 2-й бит значением 13-го бита, а у остальных сохранить значения. Для этого нам понадобятся операторы битовых сдвигов `>>` и `<<`. Для простоты обозначим второй бит как B2 и 13-й бит как B13:

```c++
int B2 = (A >> 1) & 1; // сохраняем значение 2-го бита
int B13 = (A >> 12) & 1; // сохраняем значение 13-го бита

A = (A & ~(1 << 1)) | (B13 << 1); // меняем 2-й бит значением 13-го бита
```

3) Присвоить преобразованное число А текущему элементу массива:

```c++
arr[i] = A;
```

Теперь, чтобы вывести инициализированный массив на печать и найти количество четных элементов, давайте выполним следующие действия:

```c++
int countEven = 0; // переменная для подсчета четных элементов

for (int i = 0; i < n; i++) {
std::cout << arr[i] << " "; // выводим элемент массива на печать

if (arr[i] % 2 == 0) { // проверяем, является ли элемент четным
countEven++; // увеличиваем счетчик четных элементов
}
}

std::cout << std::endl;
std::cout << "Количество четных элементов: " << countEven << std::endl;
```

В итоге, полная программа будет выглядеть следующим образом:

```c++
#include
#include // для функции rand()

int main() {
const int n = 10;
short int arr[n]; // объявляем массив размером n

for (int i = 0; i < n; i++) {
int A = rand() % 11 + 10; // генерируем случайное число в диапазоне от 10 до 20

int B2 = (A >> 1) & 1; // сохраняем значение 2-го бита
int B13 = (A >> 12) & 1; // сохраняем значение 13-го бита

A = (A & ~(1 << 1)) | (B13 << 1); // меняем 2-й бит значением 13-го бита

arr[i] = A; // присваиваем преобразованное число А текущему элементу массива
}

int countEven = 0; // переменная для подсчета четных элементов

for (int i = 0; i < n; i++) {
std::cout << arr[i] << " "; // выводим элемент массива на печать

if (arr[i] % 2 == 0) { // проверяем, является ли элемент четным
countEven++; // увеличиваем счетчик четных элементов
}
}

std::cout << std::endl;
std::cout << "Количество четных элементов: " << countEven << std::endl;

return 0;
}
```

Теперь код готов к выполнению. Программа создаст массив, заполнит его элементы в соответствии с указанным алгоритмом, выведет массив на печать и подсчитает количество четных элементов.

Надеюсь, мой ответ был подробным и понятным для вас. Если у вас возникнут еще вопросы, пожалуйста, не стесняйтесь задавать их.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика