U E D R , A S I H C RSS

�수찾아저장하기/허아�

소 �

기존� 나열� �료와는 다른 , �차배열� ��� 소트..
��보다 어려웠다.
행과 열� 같� for�� 들어가게 �면 값� 틀려져서 따로 처리하다보니 소스가 길어졌다.
� 좋� 방법� 있�까??

물론 �런 ��� 해 보았다. matrix를 temp1,2 matrix를 만들어서 행과 열� 따로 계산한다..
하지만 �번� 내 ��� 변수 낭비� 것 같고 해서 그냥 matrix 복사를 한번 � 했다.

  • 나름대로 sortì—� 대해 여러가지 ìƒ�ê°�ì�„ 하게 ë�œ 계기가 ë�œ 것 같다.
    연습장� 연필로 ����거려 보기� 하고.. ^^

추가: 시간� 많� 걸린 �유 - 역시나 배열� 함수화 하는 것�서, 새로운 방법� 없�까 �리하다가,
� � 좀� 효율�� 프로그램� 만들기 위해선 어떻게 해야할까 ? 그리고 C언어� 장�� 살리는 방법� 뭘까?
하고 ��해 봤다. 그래서 ��하면서 프로그래� 한 것, � �초해서 해 버린 소트 때문� 시간� 많� 걸린 것 같다.

소 스

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

나한테 할 �

� 기능별로 함수로 나누는건 좋� ���� �야..^^ 그게 오히려 문제가 �것 같� �낌�..ㅎㅎ
다해서 한페�지 안� 들어갈 정�로 간단하다면 그냥 짜넣어� 문제는 없�것 같아..^^ -조현태

그러고 보니 소스가 소트를 하네? 문제�는 정렬하란�� 없었는�..;;
ì�Œ.. 설마 ê¹”ë�”하게 ìœë ¥í•˜ëž€ë§�ì�´ 그런뜻ì�¸ê±°ì•¼??;;;;;
설마아~ - 조현태

�부러 소트 했어 ~ 쓰고 싶��고 ㅋㅋ , 나름대로 다 하고나서 �열� �꼈는�..^^;; --아�
으�... �거 가로먼저 소트하는거랑 세로먼저 소트하는거랑 답� 다르게 나올��..ㅎㅎ - 조현태

소트한건 쓰레기배열�니 문제없는거같�� -_-;; �래배열� 고대로 있잖아 --정수민
아..�번�었네..ㅎㅎ 한번만 복사하는줄 알았으..ㅎㅎ - 조현태
소�좀 �어달�구 ㅋㅋ 너�들� 얘기한 것� 소�� 다 있는� ��야 ㅋㅋ --아�
분명히 열심히 �는� ��야..ㅎㅎㅎ 문제는 내 머리� 메모리가 작아서 몇몇 부분� 기억� 잘 못한다고...ㅎㅎㅎ 그러니 다 �힌내용으로 삽질하고 있어� 너그러운 아량으로 �해해주시길..ㅎㅎㅎ - 조현태


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