~cpp
#include <stdio.h>
#define ROW 4
#define COL 4
#define DEBUG
void prt_array(int value[ROW][COL]); //행렬 출력
void swap(int* x,int* y); //두 파라미터를 바꾸기
void transpose(int (*value)[COL]); //행렬의 diagonal을 기준으로 transpose
void findmax_row(int (*value)[COL]); //한 행의 최대값을 마지막 열에 넣기
int main(int argc, char* argv[])
{
int max;
int i;
#ifdef DEBUG
int value[ROW][COL]={{1,2,3},{3,4,5},{4,5,6}};
#else
int value[ROW][COL];
//전체 4 * 4 행렬의 공간 중 3 * 3 행렬의 공간에 키보드로 입력을 받아 숫자를 저장한 후,
for(i=0;i<ROW-1;i++){
for(j=0;j<COL-1;j++){
scanf("%d",&value[i][j]);
}
}
#endif //DEBUG
//행렬[i][3]에는 각 행 중 가장 큰 수를 찾아 저장하고,
findmax_row(value);
transpose(value);
//행렬[3][j]에는 각 열 중 가장 큰 수를 찾아 저장하고,
findmax_row(value);
transpose(value);
//행렬[3][3]에는 전체 중 가장 큰 수를 찾아 저장한 다음,
max=0;
for(i=0;i<ROW-1;++i) if(max < value[i][3]) max=value[i][3];
for(i=0;i<COL-1;++i) if(max < value[3][i]) max=value[3][i];
value[3][3] = max;
//이들을 깔끔하게 출력하는 프로그램을 작성하여라.
prt_array(value);
return 0;
}
//////////////////////////////////////////////////////////////////////////
//// Functions ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
void prt_array(int value[ROW][COL])
{
int i=ROW,j=COL;
for(i=0;i<ROW;++i){
for(j=0;j<COL;++j){
printf("%d ",value[i][j]);
}
printf("\n");
}
}
void findmax_row(int (*value)[COL])
{
int i,j,max;
for(j=0;j<ROW-1;++j){
max=0;
for(i=0;i<COL-1;++i){
if(max < value[j][i]) max = value[j][i];
}
value[j][3] = max;
}
}
void transpose(int (*value)[COL])
{
int i,j;
for(i=0;i<ROW;++i)
{
for(j=1+i;j<COL;++j){
swap(&value[i][j],&value[j][i]);
}
}
}
void swap(int* x,int* y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}