В массиве
7х7
целого типа в каждом столбце упорядочить элементы, расположенные между максимальным и минимальным.Для начала, нужно найти минимальные и максимальные элементы массива. После чего, упорядочить или по возрастанию или по убыванию все элементы, которые находится между максимальным и минимальным элементами. Возможны такие ситуации, что максимальный и минимальный элементы расположены рядом, и тогда массив останется неизменным.
Примечание: решить с использованием указателей. Пример работы программы смотрим ниже:
Решение предоставил пользователь iksv, поблагодарим его за это. Исходный к од был в комментариях, я его перенес в эту вкладку. Вот исходник, смотрим и изучаем:
#include <iostream> #include <iomanip> #include <ctime> #include <cstdlib> using namespace std; int main() { setlocale(LC_ALL, "rus"); int matr[7][7]; // Исходная матрица srand (time(0)); // автоматическая рандомизация // Ввод/вывод матрицы cout << "Исходная матрица: \n"; for (int i=0; i<7; i++) { for (int j=0; j<7; j++) { matr[i][j] = rand() % 10; // Заполняем матрицу произвольными числами от 0-9 cout << setw(3) << matr[i][j]; } cout << endl; } int sort; // для перестановки int *max, // указатель на максимальное значение *min; // указатель на минимальное значение for (int j=0; j<7; j++) { max = &matr[0][j]; min = &matr[0][j]; // Нахождение адресов минимального и максимального элемента в столбце for (int i=1; i<7; i++) { if (matr[i][j] < *min) min = &matr[i][j]; // Запомнили адрес минимального значения if (matr[i][j] > *max) max = &matr[i][j]; // запомнили адрес минимального значения } // Сортировка for (int i=0; i<7; i++) { if (max > min) // Если максимальное значение идет позже минимального for (int k=1; k<7; k++) if (matr[k-1][j] > matr[k][j]) // Сортировка по возрастанию { sort = matr[k-1][j]; // запомнили предыдущее значение matr[k-1][j] = matr[k][j]; // поменяли предыдущее на текущее значение matr[k][j] = sort; // поменяли текущее значение на предыдущее } else if (max < min) // если минимальное значение идет позже максимального for (int k=1; k<7; k++) if (matr[k-1][j] < matr[k][j]) // сортировка по убыванию { sort = matr[k-1][j]; // запомнили предыдущее значение matr[k-1][j] = matr[k][j]; // поменяли предыдущее на текущее значение matr[k][j] = sort; // поменяли текущее значение на предыдущее } } } // вывод измененной матрицы cout << "\nИзмененная матрица:\n"; for (int i=0; i<7; i++) { for (int j=0; j<7; j++) cout << setw(3) << matr[i][j]; cout << endl; } return 0; }
Результат:
CppStudio.com
Исходная матрица: 1 3 6 1 3 1 2 4 2 9 9 1 3 3 2 0 0 6 3 5 7 7 3 9 9 3 1 7 0 6 1 4 1 9 7 4 0 0 0 2 1 1 5 4 5 8 4 7 4 Измененная матрица: 1 0 6 1 1 1 2 4 0 9 9 1 1 3 2 2 0 6 2 1 7 7 3 9 9 3 3 7 0 3 1 4 3 5 7 4 4 0 0 3 7 1 5 6 5 8 4 9 4
Комментарии
RodjeR
Arthur
Arthur
Arthur
iksv