C/C++

Создать функцию c++

Вычислить разницу между абсолютными значениями максимального и минимального элементов матрицы.
#include <algorithm>
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
pair<int, int> difference(int* a, int* b) {
auto[pmax, pmin] = minmax_element(a, b);
return { *pmax, *pmin };
}
int main() {
uniform_int_distribution<> uid(-999, 1000);
mt19937 gen{ random_device()() };
int matrix[5][9];
for (auto& row : matrix) for (auto& x : row) x = uid(gen);
for (const auto& row : matrix) {
for (auto x : row) cout << setw(5) << x << ' ';
puts("");
}
puts("");
auto [min, max] = difference(&matrix[0][0], &matrix[4][9]);
auto diff = abs(min) - abs(max);
cout
<< "Min: " << min << '\n'
<< "Max: " << max << '\n'
<< "Difference: " << diff << '\n';
}
РЗ
Рашад Закиров
62 428
Лучший ответ
#include <iomanip>
#include <ctime>
#include <iostream>
using namespace std;
template <int N, int M>
int maxabs(int (&a)[N][M]){
    int max = a[0][0], min = max;
    for (int i = 0, j; i < N; ++i)
        for(int j = 0; j < M; ++j)
            if (a[i][j] > max)
                max = a[i][j];
            else if (a[i][j] < min)
                min = a[i][j];
        return abs(max) - abs(min);
}
int main()
{
    srand(time(0));
    const int N = 10, M = 10;
    int a[N][M];
    for (int i = 0, j; i < N; cout << endl, ++i)
        for(int j = 0; j < M; cout << setw(4) << (a[i][j++] = rand() % 101 - 50));        
    cout << maxabs(a) << endl;
}
Samat Abakirov
Samat Abakirov
68 228
#include "iostream"
#include "ctime"
#include "cstdlib"
#include "cmath"
#include "algorithm"
using namespace std;
int f(int *b,int N,int M){
return abs(*max_element(b,b+N*M))-abs(*min_element(b,b+N*M));}
int main(){
const int N=5, M=6; int a[N][M], srand(time(NULL));
for(int (&i)[M]:a){for(int &j:i)cout<<(j=rand()%199-99)<<'\t'; cout<<'\n';}
cout<<"\nRes="<<f(*a,N,M)<<'\n';}
СД
Сеня Даки
78 627
1. Создаёшь переменные под минимальный и максимальный элемент.
2. Заполняешь минимальный элемент числом, которое будет гарантировано больше или равно чем все элементы в матрице
3. Аналогично заполняешь максимальный числом, которое будет гарантировано меньше или равно чем все элементы в матрице.
4. Идёшь по матрице и сравниваешь каждый элемент матрицы с минимальным и максимальным числом. Если элемент меньше минимального, делаешь этот элемент минимальным числом, аналогично большим.
5. Вычисляешь разницу между числами.
Это весьма простая задача, в чем проблема - не знаешь языка? Или не знаешь как матрицу создать?
Юрий Глазков
Юрий Глазков
28 652
Сеня Даки Однако стоит заметить, что с использованием стандартной библиотеки шаблонов это делается куда проще :)
float sx = std::simd::mmax(matrixA) - std::simd::mmin(matrixA);
Строй-Транс Ко
Строй-Транс Ко
3 177