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



Автор Кира Артемьева задал вопрос в разделе Другие языки и технологии

двумерный массив С++ и получил лучший ответ

Ответ от Николай Веселуха[гуру]
#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;
    }
}

Ответ от Kaiu[гуру]
Надеюсь Striker все же напишет, мне лень просто так писать.
Но надо найти для начала минимум и максимум в строке, если минимум и максимум отличается, то запомнить, потом снова пробежать по строке и менять все значения с минимумом на максимум, а максимум на минимум.
И так для каждой строки в матрице

Ответ от Striker[гуру]
Идешь по строкам, запоминаешь номера максимального и минимального элементов. А потом меняешь местами элементы с этими индексами.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: двумерный массив С++
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*