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

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

12

1. Задан массив A из n элементов. Подсчитать, сколько раз встречается в нем максимальное число.

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

1.

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

setlocale(LC_ALL, "rus");

const int N = 99;

int m, n, A[N][N], i, j, max = 0, a=0;

srand((unsigned)time(NULL));

cout << "Количество строк ";

cin >> m;

cout << "Количество столцов ";

cin >> n;

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

{

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

A[i][j] = rand() % 99;

}

cout << "Исходный массив:" << endl;

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

{

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

cout.width(4);

cout << A[i][j] << ' ';

}

cout << endl;

}

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

{

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

{

if (max < A[i][j])

max = A[i][j];

}

}

cout << "Максимальное значение= " << max << endl;

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

{

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

{

if (A[i][j] == max)

a++;

}

}

cout << "Количество= " << a << endl;

}

2.

# include <iostream>

void main()

{

setlocale(LC_CTYPE, "Russian");

using namespace std;

int** A, size, str;

bool result = false;

cout << "Введите размер масива " << endl;

cin >> size;

cout << "Введите элементы масива " << endl;

A = new int* [size];

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

{

A[i] = new int[size];

for (int j = 0; j < size; j++)

cin >> *(*(A + i) + j);

}

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

{

for (int j = 0; j < size; j++)

if (*(*(A + i) + j) > 0)

{

result = true;

str = i;

break;

}

if (result)

break;

}

if (result && str > 0)

for (int j = 0; j < size; j++)

*(*(A + str - 1) + j) *= -1;

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

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

{

cout << endl;

for (int j = 0; j < size; j++)

cout << *(*(A + i) + j) << "\t";

}

}

// В матрице заменитть все нечётные элементы на 0

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

setlocale(LC_ALL, "rus");

const int N = 99;

int m, n, A[N][N], i, j;

srand((unsigned)time(NULL));

cout << "Количество строк ";

cin >> m;

cout << "Количество столцов ";

cin >> n;

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

{

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

A[i][j] = rand() % 99;

}

cout << "Исходный массив:" << endl;

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

{

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

cout.width(4);

cout << A[i][j] << ' ';

}

cout << endl;

}

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

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

{

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

cout.width(4);

}

cout << endl;

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

{

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

if (A[i][j] % 2 == 1)

A[i][j] = 0;

{

cout.width(4);

cout << A[i][j] << ' ';

}

} cout << endl;

}

}

}

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

12

1. В каждой строке матрицы F2(d, p), d <= 16, p <= 18 заменить каждый элемент, стоящий на главной диагонали, минимальным элементом строки. 

2. Для заданной матрицы размером 4 на 4 найти такие k, при которых k-я строка матрицы совпадает с k-м столбцом.

//1. В каждой строке матрицы F2(d, p), d <= 16, p <= 18 заменить каждый элемент, стоящий на главной диаго-нали, минимальным элементом строки.

//2. Для заданной матрицы размером 4 на 4 найти такие k, при которых k-я строка матрицы совпадает с k-м столбцом.

#include <iostream>

using namespace std;

int get_min(int* arr, int n);

void matrix(int** matrix, int n);

void matrixx();

void matrix2(int** matrix, int n);

void matrixx1();

int main(void)

{

setlocale(LC_CTYPE, "Russian");

int choice;

do

{

cout << "Выберите вариант работы" << endl;

cout << "1 - задание 1" << endl;

cout << "2 - задание 2" << endl;

cout << "3 - выход" << endl;

cin >> choice;

switch (choice)

{

case 1:

matrixx1();

break;

case 2:

matrixx();

break;

case 3:

break;

}

} while (choice != 3);

}

void matrixx1()

{

int n;

cout << "Введите размер матрицы ";

cin >> n;

int** array = new int* [n];

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

{

array[i] = new int[n];

}

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

{

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

{

cout << "Введите эл матрицы:" << endl;

cin >> array[i][j];

}

}

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

{

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

{

cout << array[i][j] << "\t";

}

cout << endl;

}

cout << endl;

matrix(array, n);

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

{

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

{

cout << array[i][j] << "\t";

}

cout << endl;

}

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

{

delete[] array[i];

}

delete[] array;

}

int get_min(int* arr, int n)

{

int min = arr[0];

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

{

if (arr[i] < min)

{

min = arr[i];

}

}

return min;

}

void matrix(int** matrix, int n)

{

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

{

int min = get_min(matrix[i], n);

matrix[i][i] = min;

}

}

void matrixx()

{

int size;

cout << "Введите размер матрицы ";

cin >> size;

int** arr = new int* [size];

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

{

arr[i] = new int[size];

}

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

{

for (int j = 0; j < size; j++)

{

cout << "Введите эл матрицы:" << endl;

cin >> arr[i][j];

}

}

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

{

for (int j = 0; j < size; j++)

{

cout << arr[i][j] << "\t";

}

cout << endl;

}

cout << endl;

matrix2(arr, size);

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

{

delete[] arr[i];

}

delete[] arr;

}

void matrix2(int** matrix, int n)

{

int count = 0;

int k = 0;

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

{

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

{

if (matrix[i][j] == matrix[j][i])

{

count++;

}

if (count == n)

{

cout << " \n " << i << " строка совпадает с " << i << " столбцом " << endl;

k++;

}

}

count = 0;

}

if (k == 0)

cout << "\n\n Нет совпадающих строк и столбцов" << endl;

}