본문 바로가기
Programming/C

[C] N x N 행렬 오름차순 ㄹ 정렬

by graygreat 2017. 4. 3.
728x90
반응형


#include<stdio.h>
// N x N 행렬 오름차순 함수
void ascending(int num, int arr[][10]) {
    int i, j, k, l, temp = 0;            // i , j 와 k, l를 비교 
    int InitialValue_k, InitialValue_l;  // 초기값 k, l 변수 설정

    for (i = 0; i < num; i++) {
        for (j = 0; j < num; j++) {
            InitialValue_k = i;
            InitialValue_l = j + 1;
            if (j == num - 1 && i < num - 1) // N x N에서 뒤에 N이 마지막 숫자라면 다음 행의 i와 비교
                InitialValue_k = i + 1;
            for (k = InitialValue_k; k < num; k++) {
                if (k > i)
                    InitialValue_l = 0;     // k 가 i 보다 크면 l은 0부터 비교
                for (l = InitialValue_l; l < num; l++) {
                    if (arr[i][j] > arr[k][l]) {
                        temp = arr[k][l];
                        arr[k][l] = arr[i][j];
                        arr[i][j] = temp;
                    }
                }
            }
        }
    }
}

// N x N 행렬 오름차순 ㄹ 정렬
void change_connect(int num, int arr[][10]) {
    int i, j, k;
    int temp = 0;
    // 짝수번째 행만 내림차순 정렬
    for (i = 1; i < num; i += 2) {
        for (j = 0; j < num; j++) {
            for (k = j + 1; k < num; k++) {
                if (arr[i][j] < arr[i][k]) {
                    temp = arr[i][j];
                    arr[i][j] = arr[i][k];
                    arr[i][k] = temp;
                }
            }
        }
    }
}

int main() {
    int i, j;
    int num;
    int arr[10][10] = { 0, };
    printf("n을 입력하세요(3~10) : ");
    scanf_s("%d", &num);

    printf("%d X %d 행렬 입력 : \n", num, num);

    // N x N 행렬 입력
    for (i = 0; i < num; i++) {
        for (j = 0; j < num; j++) {
            scanf_s("%d", &arr[i][j]);
        }
    }

    ascending(num, arr);           // 오름차순 함수 호출
    change_connect(num, arr);      // 오름차순 ㄹ 함수 호출
    
    // N x N 행렬 출력
    for (i = 0; i < num; i++) {
        for (j = 0; j < num; j++)
            printf("%d\t", arr[i][j]);
        printf("\n");
    }
}



반응형

'Programming > C' 카테고리의 다른 글

[C] 짱짱 포인터 분석 2  (0) 2017.04.10
[C] 짱짱 포인터 분석 1  (0) 2017.04.09
[C] N x N 행렬 오름차순 역순 정렬  (0) 2017.04.03
[C] N x N 행렬 오름차순 정렬  (0) 2017.04.03
[C] 2017년 달력 출력  (0) 2017.04.03

댓글