You are on page 1of 9

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ ТАРАСА ШЕВЧЕНКA


ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра інтелектуальних технологій

Лабораторна робота №6
з дисципліни «Алгоритмізація та програмування»
з теми : «Матриці : основи роботи»
Варіант 20

Виконала студентка
групи КН-12
Пхайко Софія Дмитрівна
Перевірила:
Гамоцька Сніжана Леонідівна

Київ – 2020
Matrix31. Дана матрица размера M×N. Найти номера строки и столбца для
элемента матрицы, наиболее близкого к среднему значению всех ее
элементов.
Таблиця 1 –МПЗ
Вхідні Дії Вих.дані
дані
a[m] 1.Ввести m,n. RezM,RezN-
[n]- 2.Для і=0:вивести і,для j = 0 : вивести j та ввести a[i][j]; цілі
масив 3.Для i = 0: для j = 0: sum += a[i][j];
4. sred = sum / (m* n), RezM = 1, RezN = 1;
5.Для і=0: для j = 0 : якщо fabs(sred - a[i][j]) < fabs(sred -
a[RezM][RezN]),то RezN = j,RezM = i;
6.Вивести RezM,RezN.

Рисунок 1 – Схема алгоритму


Текст програми мовою С++:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int i, j, sum = 0,m,n;
cout << "MxN="; cin >> m >> n;
vector <vector <int>> a(m, vector <int>(n));
for (i = 0; i < m; ++i) {
cout << "[" << i + 1 << "]";
for (j = 0; j < n; ++j) {
cout << "[" << j + 1 << "]";
cin >> a[i][j];
}
}
for (i = 0; i < m; ++i)
for (j = 0; j < n; ++j) sum += a[i][j];
float sred = sum / (m * n);
int RezM = 1, RezN = 1;
for (i = 0; i < m; ++i)
for (j = 0; j < n; ++j)
if (fabs(sred - a[i][j]) < fabs(sred - a[RezM][RezN])) {
RezN = j;
RezM = i;
}
cout << "Str:" << RezM + 1 << "\n Stol:" << RezN + 1;
return 0;
}
Рисунок 2 – Результати роботи програми:

А) Б)
Matrix39. Дана целочисленная матрица размера M×N. Найти количество ее
столбцов, все элементы которых различны.
Таблиця 1 –МПЗ
Вхідні Дії Вих.дані
дані
a[m] 1.Ввести m,n. num-ціле
[n]- 2.Для і=0:вивести і,для j = 0 : вивести j та ввести a[i][j];
масив 3. num = 0;
4.Для і=0: для j = 0 : якщо j == col,то ++num для j2 = j + 1:
якщо j2 < col, break;
5.Вивести num.
Рисунок 1 – Схема алгоритму
Текст програми мовою С++:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int i, j, sum = 0,n,m;
cout << "MxN"; cin >> m >> n;
vector <vector <int>> a(m, vector <int>(n));
for (i = 0; i < m; ++i) {
cout << "[" << i + 1 << "]";
for (j = 0; j < n; ++j) {
cout << "[" << j + 1 << "]";
cin >> a[i][j];
}
}
int num = 0, j2;
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) {
for (j2 = j + 1; (j2 < n) && (a[i][j] != a[i][j2]); ++j2);
if (j2 < n) break;
}
if (j == n) ++num;
}
cout << "num=" << num;
return 0;
}
Рисунок 2 - Результати роботи програми:

А) Б)
Matrix51. Дана матрица размера M×N. Поменять местами строки,
содержащие минимальный и максимальный элементы матрицы.
Таблиця 1 –МПЗ
Вхідні Дії Вих.да
дані ні
a[m] 1.Ввести m,n. a[i][j]-
[n]- 2.Для і=0:вивести і,для j = 0 : вивести j та ввести a[i][j]; масив
масив 3. maxI = 1, maxJ = 1, minI = 1, minJ = 1;
4.Для і=0: для j = 0 : якщо a[i][j] > a[maxI][maxJ],то maxI =
i,maxJ = j; якщо a[i][j] < a[minI][minJ],то minI = i, minJ = j;
5.Якщо minI != maxI,то для j = 0: swap(a[maxI][j], a[minI][j]);
6.Для i = 0: Для j = 0 : вивести a[i][j].

Рисунок 1 – Схема алгоритму


Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
void swap(int& x, int& y) {
if (x != y) {
x += y;
y = x - y;
x -= y;
}
}
int main()
{
int i, j, sum = 0,m,n;
cout << "MxN"; cin >> m >> n;
vector <vector <int>> a(m, vector <int>(n));
for (i = 0; i < m; ++i) {
cout << "[" << i + 1 << "]";
for (j = 0; j < n; ++j) {
cout << "[" << j + 1 << "]";
cin >> a[i][j];
}
}
int maxI = 1, maxJ = 1, minI = 1, minJ = 1;
for (j = 0; j < m; ++j) {
for (i = 0; i < n; ++i) {
if (a[i][j] > a[maxI][maxJ]) {
maxI = i;
maxJ = j;
}
if (a[i][j] < a[minI][minJ]) {
minI = i;
minJ = j;
}
}
}
if (minI != maxI)
for (j = 0; j < n; ++j) {
swap(a[maxI][j], a[minI][j]);
}
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) cout << a[i][j] << " ";
cout << " \n";
}
return 0;
}
Рисунок 2 – Результати роботи програми :
А) Б)
Matrix65. Дана матрица размера M×N. Удалить ее первый столбец,
содержащий только положительные элементы. Если требуемых столбцов нет,
то вывести матрицу без изменений.
Таблиця 1 –МПЗ
Вхідні Дії Вих.дані
дані
a[m] 1.Ввести m,n. a[i][j]-
[n]- 2.Для і=0:вивести і,для j = 0 : вивести j та ввести a[i][j]; масив
масив 3. num = 0;
4.Для і=0: для j = 0 : якщо num == m ,то column = j, якщо
a[i][j] > 0,то ++num .
5. --n;
6.Для j = column : Для i = 0: a[i][j] = a[i][j + 1];
7. Для i = 0: Для j = 0 : вивести a[i][j].
Рисунок 1 – Схема алгоритму
Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int i, j, sum = 0,m,n;
cout << "MxN"; cin >> m >> n;
vector <vector <int>> a(m, vector <int>(n));
for (i = 0; i < m; ++i) {
cout << "[" << i + 1 << "]";
for (j = 0; j < n; ++j) {
cout << "[" << j + 1 << "]";
cin >> a[i][j];
}
}
int column, num=0;
for (j = 0; j < n; ++j) {
for (i = 0; i < m; ++i)
if (a[i][j] > 0) num++;
if (num == m) {
column = j;
break;
}
}
--n;
for (j = column; j < n; ++j)
for (i = 0; i < m; ++i)
a[i][j] = a[i][j + 1];
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) cout << a[i][j] << " ";
cout << " \n";
}
return 0;
}
Рисунок 2 – Результати роботи програми :

A) Б)

You might also like