~cpp #include <stdio.h> #define MATRIX_SIZE 4 void search_max(int matrix[][MATRIX_SIZE]); void print_matrix(int matrix[][MATRIX_SIZE]); void change(int *, int *); int i, j; void main() { int matrix[MATRIX_SIZE][MATRIX_SIZE] = {{0,}}; //3 * 3 입력 . for(i = 0; i < MATRIX_SIZE - 1; i++){ for(j = 0; j < MATRIX_SIZE -1; j++){ printf("matrix[%d][%d] = ", i, j); scanf("%d", &matrix[i][j]); } } // 가장 큰 수 찾기. search_max(matrix); //출력 print_matrix(matrix); } void search_max(int matrix[][MATRIX_SIZE]) { int temp_matrix[4][4], a, b; for(i = 0; i < MATRIX_SIZE; i++){ for(j = 0; j < MATRIX_SIZE; j++){ temp_matrix[i][j] = matrix[i][j]; } } //찾아 넣기 행 for(i = 0; i < MATRIX_SIZE-1; i++){ for(j = 0; j < MATRIX_SIZE-2; j++){ if(temp_matrix[i][j] > temp_matrix[i][j+1]){ change(&temp_matrix[i][j], &temp_matrix[i][j+1]); } } matrix[i][MATRIX_SIZE-1] = temp_matrix[i][MATRIX_SIZE-2]; } for(i = 0; i < MATRIX_SIZE; i++){ for(j = 0; j < MATRIX_SIZE; j++){ temp_matrix[i][j] = matrix[i][j]; } } //찾아 넣기 열 for(i = 0; i < MATRIX_SIZE-1; i++){ for(j = 0; j < MATRIX_SIZE-2; j++){ if(temp_matrix[j][i] > temp_matrix[j+1][i]){ change(&temp_matrix[j][i], &temp_matrix[j+1][i]); } } matrix[MATRIX_SIZE-1][i] = temp_matrix[MATRIX_SIZE-2][i]; } //찾아 넣기 마지막 for(i = 0; i < MATRIX_SIZE-2; i++){ if(temp_matrix[MATRIX_SIZE-1][i] > temp_matrix[MATRIX_SIZE-1][i+1]){ change(&temp_matrix[MATRIX_SIZE-1][i], &temp_matrix[MATRIX_SIZE-1][i+1]); } if(temp_matrix[i][MATRIX_SIZE-1] > temp_matrix[i+1][MATRIX_SIZE-1]){ change(&temp_matrix[i][MATRIX_SIZE-1], &temp_matrix[i+1][MATRIX_SIZE-1]); } } a = temp_matrix[MATRIX_SIZE-1][MATRIX_SIZE-2]; b = temp_matrix[MATRIX_SIZE-2][MATRIX_SIZE-1]; matrix[MATRIX_SIZE-1][MATRIX_SIZE-1] = a > b ? a : b; } void print_matrix(int matrix[][MATRIX_SIZE]) { for(i = 0; i < MATRIX_SIZE; i++){ for(j = 0; j < MATRIX_SIZE; j++){ printf("%5d", matrix[i][j]); } if(j == MATRIX_SIZE) printf("\n"); } } void change(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; }