Улугбек Эргашев
Улугбек Эргашев

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

В произвольной матрице A [ N ][ M ] поменять местами в каждой строке минимальный и максимальный элементы.

Abdishukur Batyrov
Abdishukur Batyrov

#include
#include
#include
#include

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;
}
}

Gauda
Gauda

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

Ви
Виталий

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

Похожие вопросы
Ввевсти двумерный массив на C++
двумерный массив через new( С++)
заполнить двумерный массив..
двумерный массив паскаль
Строчный массив (желательно двумерный)
С++ двумерный массив - инициализация
что такое одномерный и двумерный массив?
Двумерный массив в языке С.
Задача на двумерный массив
Как ввести двумерный массив в С++ вручную