Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
29.04.2018
Размер:
558.11 Кб
Скачать

Void main()

{

char tmp[30];

int a, b = 0, i, mask = 2047;

cin >> a;

_itoa_s(a, tmp, 2);

cout << tmp << endl;

_itoa_s((a & mask) >> 5, tmp, 2);

cout << tmp << endl;

for (i = 10; i >= 0; i--)

{

if (tmp[i] == '1')

{

b++;

}

}

cout << b << endl;

}

№2

Извлечь 3 бита числа А, начиная с позиции n, и вставить их в число В, начиная с позиции m.

#include <iostream>

using namespace std;

Void main()

{

char tmp[30];

//n=2, m=3

int a, b, mask1 = 28, mask2 = ~mask1 << 1;

cin >> a;

_itoa_s(a, tmp, 2);

cout << tmp << endl;

cin >> b;

_itoa_s(b, tmp, 2);

cout << tmp << endl;

_itoa_s((b&mask2), tmp, 2);

cout << tmp << endl;

_itoa_s((a&mask1) << 1, tmp, 2);

cout << tmp << endl;

_itoa_s(((a&mask1) << 1) | (b&mask2), tmp, 2);

cout << tmp << endl;

}

№3

Используя битовые операции проверить, кратно ли двум число А.

#include <iostream>

using namespace std;

Void main()

{

setlocale(LC_CTYPE, "Russian");

char tmp[20];

int a;

cin >> a;

_itoa_s(a, tmp, 2);

if ((a & 1) == 0) cout << "Число кратно двум" << endl;

else cout << "Число не кратно двум" << endl;

}

№4

В числе А установить в ноль n битов влево от позиции p.

#include <iostream>

using namespace std;

Void main()

{

char tmp[30];

int n, p = 3, A;

cout << "Vvedite chislo" << endl;

cin >> A;

_itoa_s(A, tmp, 2);

cout << tmp << endl;

cout << "Kolichestvo bitov" << endl;

cin >> n;

int maskA = 1 << (n + p) | 7;

_itoa_s(A & maskA, tmp, 2);

cout << tmp << endl;

}

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

№1

Даны два массива x и y. Найти количество одинаковых элементов в этих массивах, т. е. количество пар x[i] = y[j] для некоторых i и j.

#include <iostream>

#include <ctime>

#include <locale>

using namespace std;

Void main()

{

int i, j, n = 0;

double x[100], y[90];

srand((unsigned)time(NULL));

for (i = 0; i < 100; i++)

{

*(x+i) = rand() % 200;

}

for (j = 0; j < 90; j++)

{

*(y+j) = rand() % 100;

}

for (i = 0; i < 100; i++)

{

j = 0;

for (j; j < 90; j++)

{

if (*(x+i) == *(y+j))

{

n++;

break;

}

}

}

cout << n << endl;

}

№2

Дан массив А размера n, не содержащий нулевых элементов. Преобразовать массив А так, чтобы вначале шли положительные элементы, а затем отрицательные. Дополнительные массивы не использовать.

#include <iostream>

#include <ctime>

#include <locale>

using namespace std;

Void main()

{

const int n = 100;

int i, g, max = 50, k;

double A[n];

srand((unsigned)time(NULL));

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

{

*(A + i) = ((rand() % max) + 1);

}

for (i = 1; i < n; i += 2)

{

*(A + i) = ((-1)*(rand() % max) - 1);

}

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

{

if (*(A + i) < 0)

{

for (g = 99; g > -0.0001; g--)

{

k = *(A + i);

if (*(A + g) > 0)

{

*(A + i) = *(A + g);

*(A + g) = k;

break;

}

}

}

}

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

{

cout << *(A + i) << endl;

}

}

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

№1

Найти самое длинное и самое короткое слово в заданном предложении.

#include <iostream>

using namespace std;

void main()

{

char s[30], s1[30];

int i, b = 0, k = 0, a, l = 0, t = 0;

gets_s(s);

for (i = 0; s[i] != '\0'; i++)

{

t++;

}

for (i = 0; i <= t+1; i++)

{

k++;

if (*(s+i) == ' ' || *(s + i) == '\0')

{

if (k > b)

{

b = (k - 1);

a = i;

}

k = 0;

}

}

for (i = (a - b); i < a; i++)

{

*(s1+l) = *(s + i);

l++;

}

cout << s1 << endl;

}

#include <iostream>

using namespace std;

void main()

{

char s[30], s1[30];

int i, b = 0, k = 0, a, l = 0, t = 0;

gets_s(s);

for (i = 0; s[i] != '\0'; i++)

{

t++;

}

for (i = 0; i <= t + 1; i++)

{

k++;

if (s[i] == ' ' || s[i] == '\0')

{

if (k > b)

{

b = (k - 1);

a = i;

}

k = 0;

}

}

for (i = (a - b); i < a; i++)

{

s1[l] = s[i];

l++;

}

cout << s1 << endl;

}

№2

Написать программу, реализующую вставку в строку n символов, начиная с позиции k. 

#include <stdio.h>

#include <iostream>

using namespace std;

void main()

{

char s[30], s1[30];

int i, k;

cout << "Vvedite stroky" << endl;

gets_s(s);

cout << "Vvedite slovo" << endl;

cin >> s1;

cout << "Vvedite chislo" << endl;

cin >> k;

for (i = 0; *(s1+i)!='\0'; i++)

{

*(s+k) = *(s1+i);

k++;

}

cout << s << endl;

}

#include <stdio.h>

#include <iostream>

using namespace std;

void main()

{

char s[30], s1[30];

int i, k;

cout << "Vvedite stroky" << endl;

gets_s(s);

cout << "Vvedite slovo" << endl;

cin >> s1;

cout << "Vvedite chislo" << endl;

cin >> k;

for (i = 0; s1[i] != '\0'; i++)

{

s[k] = s1[i];

k++;

}

cout << s << endl;

}

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

№1

Дана матрица А(N, N) и целое число m. Преобразовать матрицу по правилу: строку с номером M сделать столбцом с номером M, а столбец с номером M сделать строкой с номером M

#include <iostream>

#include <ctime>

using namespace std;

void main()

{

const int n = 4;

int a[n][n], i, j, m, m1, t = 0;

srand((unsigned)time(NULL));

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

{

for (j = 0; j <= n; j++)

{

a[i][j] = (rand() % 8) + 1;

}

}

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

{

for (j = 0; j <= n; j++)

{

t++;

cout << a[i][j] << " ";

if (t == (n + 1))

{

cout << endl;

t = 0;

}

}

}

cout << "Vvedite m" << endl;

cin >> m;

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

{

m1 = a[m][i];

a[m][i] = a[i][m];

a[i][m] = m1;

}

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

{

for (j = 0; j <= n; j++)

{

t++;

cout << a[i][j] << " ";

if (t == (n + 1))

{

cout << endl;

t = 0;

}

}

}

}

#include <iostream>

#include <ctime>

using namespace std;

void main()

{

const int n = 4;

int a[n][n], i, j, m, m1, t = 0;

srand((unsigned)time(NULL));

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

{

for (j = 0; j <= n; j++)

{

*(a[i]+j) = (rand() % 8) + 1;

}

}

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

{

for (j = 0; j <= n; j++)

{

t++;

cout << *(a[i] + j) << " ";

if (t == (n + 1))

{

cout << endl;

t = 0;

}

}

}

cout << "Vvedite m" << endl;

cin >> m;

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

{

m1 = *(a[m] + i);

*(a[m] + i) = *(a[i] + m);

*(a[i] + m) = m1;

}

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

{

for (j = 0; j <= n; j++)

{

t++;

cout << *(a[i] + j) << " ";

if (t == (n + 1))

{

cout << endl;

t = 0;

}

}

}

}

№2

Найти наиболее близкий к среднему арифметическому всех элементов матрицы В(N, N), а также номера строки и столбца, на пересечении которых он находится.

#include <iostream>

#include <ctime>

#include <locale>

using namespace std;

void main()

{

const int n = 4;

int a[n][n], i, j, m = 0, m1 = 0, t = 0, kek = 0, lol = 100, i1, j1;

srand((unsigned)time(NULL));

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

{

for (j = 0; j <= n; j++)

{

a[i][j] = (rand() % 98) + 1;

m++;

}

}

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

{

for (j = 0; j <= n; j++)

{

m1++;

cout << a[i][j] << " ";

if (m1 == (n + 1))

{

cout << endl;

m1 = 0;

}

}

}

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

{

for (j = 0; j <= n; j++)

{

t += a[i][j];

}

}

t = t / m;

cout << t << endl;

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

{

for (j = 0; j <= n; j++)

{

kek = abs(t - a[i][j]);

if (kek < lol)

{

lol = kek;

i1 = i;

j1 = j;

}

}

}

cout << "Chislo " << a[i1][j1] << " Stroka " << i1 + 1 << " Stolbec " << j1 + 1 << endl;

}

#include <iostream>

#include <ctime>

#include <locale>

using namespace std;

void main()

{

const int n = 4;

int a[n][n], i, j, m = 0, m1 = 0, t = 0, kek = 0, lol = 100, i1, j1;

srand((unsigned)time(NULL));

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

{

for (j = 0; j <= n; j++)

{

*(a[i] + j) = (rand() % 98) + 1;

m++;

}

}

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

{

for (j = 0; j <= n; j++)

{

m1++;

cout << *(a[i] + j) << " ";

if (m1 == (n + 1))

{

cout << endl;

m1 = 0;

}

}

}

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

{

for (j = 0; j <= n; j++)

{

t += *(a[i] + j);

}

}

t = t / m;

cout << t << endl;

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

{

for (j = 0; j <= n; j++)

{

kek = abs(t - *(a[i] + j));

if (kek < lol)

{

lol = kek;

i1 = i;

j1 = j;

}

}

}

cout << "Chislo " << *(a[i1] + j1) << " Stroka " << i1 + 1 << " Stolbec " << j1 + 1 << endl;

}

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

1. В массиве, состоящем из вещественных элементов, вычислить количество элементов массива, больших С, и произведение элементов массива, расположенных после максимального по модулю элемента.

2. Проверить, есть ли в матрице хотя бы одна строка, содержащая элемент, равный нулю, и найти ее номер. Уменьшить все элементы матрицы на значение первого элемента найденной строки.

#include <iostream>

#include <ctime>

using namespace std;

void arrau();

void matrix();

Соседние файлы в папке Пустовалова 1 сем