단어를 입력받고, 사전 순서대로 출력하기2015. 5. 29. 15:54
사용자로부터 10개 이하의 숫자를 입력받고,
사전 순서대로 출력하여 보자.
1. int n 으로 입력할 단어의 개수를 받는다.
2. 단어를 n 수 만큼 입력받는다.
3. Sort 함수를 만들어 정렬을 한 다음, 출력한다.
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
39
40
41
42
43
44
45
46
47
48
|
#include <stdio.h>
void main()
{
int n; //
/* 왜 2차원 배열인지는 아래에 */
char str[10][20];
printf("입력할 단어 개수?(최대10개) : ");
scanf_s("%d", n);
for(int i=0; i<n; i++)
{
printf("단어 입력 : ");
scanf_s("%s", str[i]);
}
Sort(str, n);
for (int i = 0; i < n; i++)
printf("%s\n", str[i]);
}
void Sort(char (*str)[10], int n)
{
int min;
char temp[20];
for(int i=0; i<n-1; i++)
{
min = i;
for(int k= i+1; k<n; k++)
{
/* cmp에 대한 조건식 아래에 */
if(strcmp(str[min], str[k]) > 0)
{
min = k;
}
}
strcpy(temp, str[i]);
strcpy(str[i], str[min]);
strcpy(str[min], temp);
}
}
|
정렬하는 이유는
for (int i = 0; i < n; i++)
printf("%s\n", str[i]);
이 부분에서 순서대로 출력하기 위해서 입니다.
char str[10][20] => 2차원 배열로 만든 이유
[10]부분이 단어의 개수를 입력받습니다
배열은 포인터다! 라는것을 기억한다면,
10개의 방은 포인터 형이고 이 포인터는 다시 [20] 의 배열을 각각 가리킵니다.
그래서 단어를 입력받을 때 str[i] 가 [20] 개의 각각의 방에 문자열을 저장합니다.
strcmp(str[min], str[k]) > 0 => strcmp의 조건식을 > 0 으로 한 이유
strcmp의 기본형 :
char * strcmp( const char *s1, const char *s2);
strcmp == 0 결과 값이면 s1 = s2 |
strcmp > 0 결과 값이면 s1 > s2 |
strcmp < 0 결과 값이면 s1 < s2 |
'Language > C++' 카테고리의 다른 글
문자열을 입력받고, 문자의 빈도수 계산하여 출력하기 (0) | 2015.05.29 |
---|---|
문자열의 숫자을 더하고 출력하기 (0) | 2015.05.29 |
다양한 종류의 포인터 정리 (0) | 2015.05.29 |
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |