Другие языки программирования и технологии

Даны 2 матрицы 2х3. Нужно поменять местами наибольшее значение из 1 с наименьшим из 2. На C++

#include <iostream>
#include <iomanip>
using namespace std;
void print(int*, const size_t, const size_t);
size_t min(int*, const size_t, const size_t);
size_t max(int*, const size_t, const size_t);
void replace(int*, int*, const size_t, const size_t);
int main() {
const size_t rows = 2, cols = 3;
int m1[rows][cols] = { { 5, 7, 9 }, { 6, 2, 4 } };
int* pm1 = &m1[0][0];
cout << "\n\tMatrix 1 before replacing:\n\n"; print(pm1, rows, cols);
int m2[rows][cols] = { { 15, 17, 19 }, { 16, 12, 14 } };
int* pm2 = &m2[0][0];
cout << "\tMatrix 2 before replacing:\n\n"; print(pm2, rows, cols);
replace(pm1, pm2, rows, cols);
cout << "\n\tMatrix 1 after replacing:\n\n"; print(pm1, rows, cols);
cout << "\tMatrix 2 after replacing:\n\n"; print(pm2, rows, cols);
cin.get();
}
void replace(int* a, int* b, const size_t rows, const size_t cols) {
int index, mn = min(a, rows, cols), mx = max(a, rows, cols);
index = a[mn];
a[mn] = b[mx];
b[mx] = index;
}
void print(int* v, const size_t rows, const size_t cols) {
size_t n = 0;
while (n < rows * cols) {
++n;
cout << setw(6) << v[n - 1];
if (0 == n % cols) cout << "\n";
}
cout << "\n";
}
size_t min(int* v, const size_t rows, const size_t cols) {
size_t n = 1, index = 0;
int val = v[0];
while (n < rows * cols) {
if (val > v[n]) {
val = v[n];
index = n;
}
++n;
}
return index;
}
size_t max(int* v, const size_t rows, const size_t cols) {
size_t n = 1, index = 0;
int val = v[0];
while (n < rows * cols) {
if (val < v[n]) {
val = v[n];
index = n;
}
++n;
}
return index;
}
АИ
Анатолий Ильин
99 605
Лучший ответ
Находишь индексы максимального элемента первой и минимального второй матрицы
и меняешь их местами...

Похожие вопросы