C언어/C언어 자료실

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

Chipmunks 2018. 4. 27.
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() 함수로 두 수를 비교하는 함수를 콜백함수로 전달해, 내림차순으로 정렬해줬다.

댓글