U E D R , A S I H C RSS

�수찾아저장하기/김태훈zyint

�낀�


문제는 쉬운� �걸 함수로 나누기가 무지 애매하다 -_-;
문제는 금방풀고; � 프로그래� 함수 어떻게 나눌지 ��한게 한시간 걸렸�듯...

�단 리팩토� 전 소스만 올렸다;

- 추가: 리팩토�(?) 한거같지� 않지만-_- �단 나눠봤다; 행렬�서 transpose를 �용해서;;; �단 짜보았는� 효율��진 않�듯 -_-

리팩토� � 소스

~cpp 
#include <stdio.h> 

#define ROW 4
#define COL 4


void prt_array(int value[ROW][COL]);

int main(int argc, char* argv[])
{

	//int value[4][4]={ {1,2,3}, {3,4,5}, {4,5,6}};
	int max;
	int i,j;
	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]);
		}
	}

	//행렬[i][3]�는 � 행 중 가장 � 수를 찾아 저장하고,
	for(i=0;i<ROW-1;++i){
		max=0;
		for(j=0;j<COL-1;++j){
			if(max < value[i][j]) max = value[i][j];
		}
		value[i][3] = max;
	}

	
	//행렬[3][j]�는 � 열 중 가장 � 수를 찾아 저장하고,  
	for(j=0;j<COL-1;++j){
		max = 0;
		for(i=0;i<ROW-1;++i){
			if(max < value[i][j]) max = value[i][j];
		}
		value[3][j] = max;
	}


	
	//행렬[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");
	}
}


리팩토� 後 소스

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


나�게 할�


오오;; 함수나누는 부분� 예술�다 +_+ 나� �먹어볼까 ㅎㅎ


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:20
Processing time 0.0040 sec