Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАП12вар1Сем.docx
Скачиваний:
7
Добавлен:
30.01.2023
Размер:
1.3 Mб
Скачать

Лабораторная работа № 11

12

  1. Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести полученное число.

  2. Установить в 0 n битов в числе А вправо от позиции p, заменить ими m битов числа В, начиная с позиции q.

1.

# include <iostream>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

int A; char tmp[33];

const unsigned int maskA = 0xF8;

cout << "Введите число ";

cin >> A;

_itoa_s(A, tmp, 2);

cout << "Число в двоичном виде = " << tmp << endl;

_itoa_s(A ^ maskA, tmp, 2);

cout << "Результат инвертирования = " << tmp << endl;

}

2.

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

int A, B, n, p, m, q; char tmp[33];

unsigned int maskA = 0, maskB = 0, maskB1 = 0, maskM = 0;

cout << "Введите число А: ";

cin >> A;

cout << "Введите число n: ";

cin >> n;

cout << "Введите число p: ";

cin >> p;

for (int i = 1; i <= p; i++)

maskA = maskA << 1 | 1; // получаем р едениц

maskB = maskA << (n - p);

maskA = ~maskB;

_itoa_s(A, tmp, 2);

cout << " Число А: " << tmp << endl;

_itoa_s(A & maskA, tmp, 2);

cout << " Результат A: " << tmp << endl << endl;

cout << "Введите число B: ";

cin >> B;

cout << "Введите число m: ";

cin >> m;

cout << "Введите число q: ";

cin >> q;

maskB = A & maskB;

maskB = maskB >> (n - p);

for (int i = 1; i <= m; i++)

maskM = maskM << 1 | 1;

if (m < p)

maskB = maskB & maskM;

else

{

for (int j = 0; j < (m - p); j++)

maskB = maskB | (1 << (p - j));

}

maskB1 = ~(maskM << (q - m));

maskB = maskB << (q - m);

_itoa_s(B, tmp, 2);

cout << " Число B: " << tmp<<endl;

_itoa_s((B & maskB1) | maskB, tmp, 2);

cout << " Результат B: " << tmp << endl << endl;

}

Лабораторная работа № 12

12

1. Заданы два массива A и B, каждый из n элементов. Подсчитать количество таких чисел k, для которых: A[k] = B[k], A[k] > B[k] и A[k] < B[k].

2. В одномерном массиве A найти номера всех элементов массива, которые равны, больше и меньше некоторого числа k.

1.

#include <iostream>

void main()

{

setlocale(LC_CTYPE, "Russian");

using namespace std;

const int n = 10;

int A[n], B[n], k, count1 = 0, count2 = 0, count3 = 0;

cout << "Введите массив А: ";

for (int i = 0; i < n; i++)

cin >> *(A + i);

cout << "Введите массив В: ";

for (int i = 0; i < n; i++)

cin >> *(B + i);

for (int k = 0; k < n; k++)

if (*(A + k) == *(B + k))

count1++;

for (int k = 0; k < n; k++)

if (*(A + k) > *(B + k))

count2++;

for (int k = 0; k < n; k++)

if (*(A + k) < *(B + k))

count3++;

cout << "Колличество А[k]=В[k]: " << count1 << endl;

cout << "Колличество А[k]>В[k]: " << count2 << endl;

cout << "Колличество А[k]<В[k]: " << count3 << endl;

}

2.

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

const int n = 10;

int A[n], k;

cout << "Введите k: ";

cin >> k;

cout << "Введите массив А: ";

for (int i = 0; i < n; i++)

cin >> *(A + i);

cout << "Индексы А[i]=k: ";

for (int i = 0; i < n; i++)

if (*(A + i) == k)

cout << i << " ";

cout << endl << "Индексы А[i]>k: ";

for (int i = 0; i < n; i++)

if (*(A + i) > k)

cout << i << " ";

cout << endl << "Индексы А[i]<k: ";

for (int i = 0; i < n; i++)

if (*(A + i) < k)

cout << i << " ";

}