#include using namespace std; // This assignment is worth 5 points int ** matrix = NULL; int main() { int x = 0, y = 0, rows, columns; string temp; char ch; cout << "Enter number of rows and columns: "; cin >> rows >> columns; cin.ignore(); matrix = new int * [rows]; for(int i = 0; i < rows; i++) matrix[i] = new int[columns]; cout << "Matrix elements: " << endl; do { y = 0; do { cin >> matrix[x][y]; ch = cin.get(); y++; } while(y < columns && ch != '\n'); if(ch != '\n' && y == columns) getline(cin, temp); else if(ch == '\n' && y < columns) for(y; y < columns; y++) matrix[x][y] = 0; x++; } while(x < rows); int index_sav; // Save the index of the largest value // Sort each row first for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) { index_sav = j; for(int k = j+1; k < columns; k++) { if(matrix[i][k] > matrix[i][index_sav]) index_sav = k; } if(index_sav != j) { matrix[i][j] += matrix[i][index_sav]; matrix[i][index_sav] = matrix[i][j] - matrix[i][index_sav]; matrix[i][j] -= matrix[i][index_sav]; } } } // Now sort each column for(int i = 0; i < columns; i++) { for(int j = 0; j < rows; j++) { index_sav = j; for(int k = j+1; k < rows; k++) { if(matrix[k][i] > matrix[index_sav][i]) index_sav = k; } if(index_sav != j) { matrix[j][i] += matrix[index_sav][i]; matrix[index_sav][i] = matrix[j][i] - matrix[index_sav][i]; matrix[j][i] -= matrix[index_sav][i]; } } } cout << "Sorted matrix:" << endl; for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) cout << matrix[i][j] << ' '; cout << endl; } return 0; }