C언어/C언어 자료실

내림차순 정렬, 최댓값 찾기

Chipmunks 2018. 4. 27. 18:02
728x90

시험 끝난 금요일, 출석점수가 않는 수업 하나밖에 없어서 자체휴강했다.


시험 기간에 쌓인 피로로 아침 밥만 먹고 오후까지 잠을 잤다.


독서도 할겸 5월 달 계획도 세울겸 해서 집 앞 카페로 출발하던 차에,


후배가 C언어 수업시간에, 수업 끝날때까지 제출할 과제좀 해달라 해서 급히 카페에서 코드를 짰다.



내림차순 정렬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
 
int descending(const void* a, const void* b)
{
    if(*(int *)a < *(int *)b)
        return 1;
    else if(*(int *)a > *(int *)b)
        return -1;
    else
        return 0;
}
 
int main(int argc, char* argv[]) {
    int inputSize = 0, iterated;
    int *arrA;
 
    printf("Please input size of array: ");
    scanf("%d"&inputSize);
 
    arrA = (int *)malloc(sizeof(int* inputSize);
 
    printf("Please input value:\n");
    for (iterated = 0; iterated < inputSize; iterated++) {
        printf("A[%d] = ", iterated);
        scanf("%d"&arrA[iterated]);
    }
 
    qsort(arrA, inputSize, sizeof(int), descending);
 
    printf("\n\nArray after sorting in descending order:\n");
    for (iterated = 0; iterated < inputSize; iterated++) {
        printf("A[%d] = %d\n", iterated, arrA[iterated]);
    }
 
    free(arrA);
    return 0;
}
cs



최댓값 찾기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[]) {
    int inputSize = 0, iterated, max = 0, maxIndex = 0;
    int *arrA;
 
    do {
        if (inputSize > 10) {
            printf("Size of array has to smaller than 10. Please input again.\n\n");
        }
 
        printf("Please input size of array: ");
        scanf("%d"&inputSize);
    } while(inputSize > 10);
 
    arrA = (int *)malloc(sizeof(int* inputSize);
 
    printf("Please input value:\n");
    for (iterated = 0; iterated < inputSize; iterated++) {
        printf("A[%d] = ", iterated);
        scanf("%d"&arrA[iterated]);
 
        if (iterated == 0)
            max = arrA[iterated];
        
        if (max < arrA[iterated]) {
            max = arrA[iterated];
            maxIndex = iterated;
        }
    }
 
    printf("\nThe maximum element in the input array is a[%d] = %d\n\n", maxIndex, max);
    
    free(arrA);
    return 0;
}
cs




수업 진도가 어디까지 나갔는지 몰라 그냥 내 식대로 짰다. 정수형 배열은 malloc() 함수로 동적으로 생성해줬다.

정렬은 qsort() 함수로 두 수를 비교하는 함수를 콜백함수로 전달해, 내림차순으로 정렬해줬다.