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

двумерный массив С++

В произвольной матрице A [ N ][ M ] поменять местами в каждой строке минимальный и максимальный элементы.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

using namespace std;

void show_matrix(int **, const size_t, const size_t);
void swap_min_max_row_matrix(int **, const size_t, const size_t);
int * min_index(int *, const size_t);
int * max_index(int *, const size_t);

int main() {
    cout << "rows, columns?.. ";
    size_t r, c;
    cin >> r >> c;

    int ** a = new int * [r];
    srand(unsigned(time(0)));
    for (size_t n = 0; n < r; n++) {
        a[n] = new int [c];
        for (size_t m = 0; m < c; m++)
            a[n][m] = rand();
    }

    show_matrix(a, r, c);
    swap_min_max_row_matrix(a, r, c);
    show_matrix(a, r, c);

    for (size_t n = 0; n < r; n++) delete[] a[n];
    delete[] a;
    a = NULL;

    cin.get(); cin.get();
    return 0;
}

void show_matrix(int ** p, const size_t r, const size_t c) {
    for (size_t n = 0; n < r; n++, cout << endl)
        for (size_t m = 0; m < c; m++)
            cout << setw(7) << p[n][m];
    cout << endl;
}

int * min_index(int * beg, const size_t size) {
    int * index = 0;
    int min = INT_MAX;

    for (size_t n = 0; n < size; n++)
        if (beg[n] < min) {
            min = beg[n];
            index = &beg[n];
        }
    return index;
}

int * max_index(int * beg, const size_t size) {
    int * index = 0;
    int max = INT_MIN;

    for (size_t n = 0; n < size; n++)
        if (beg[n] > max) {
            max = beg[n];
            index = &beg[n];
        }
    return index;
}

void swap_min_max_row_matrix(int ** ptr, const size_t rows, const size_t cols) {
    int temp;
    int * min, * max;
    size_t next = 0;

    for (ptr[next]; ptr[next] < ptr[rows]; next++) {    
        max = max_index(ptr[next], cols);
        min    = min_index(ptr[next], cols);
        temp = *min;
        *min = *max;
        *max = temp;
    }
}
Центр Гидроизоляции
Центр Гидроизоляции
76 220
Лучший ответ
Надеюсь Striker все же напишет, мне лень просто так писать.
Но надо найти для начала минимум и максимум в строке, если минимум и максимум отличается, то запомнить, потом снова пробежать по строке и менять все значения с минимумом на максимум, а максимум на минимум.
И так для каждой строки в матрице
ПM
Павел Mironov
59 210
Идешь по строкам, запоминаешь номера максимального и минимального элементов. А потом меняешь местами элементы с этими индексами.
Саша Пупкин
Саша Пупкин
8 247