- 기존 원소의 개수보다 작거나 같으면 이를 무시하고 다시 원소의 개수를 입력받습니다.
- 만약 기존 원소의 개수보다 크면 realloc() 함수로 메모리를 확장합니다.
- 또한, 이때 새롭게 추가되는 원소에 대해서는 사용자로부터 그 값을 입력받습니다.
- 사용자로부터 원소의 개수를 입력받기 전에, 현재 원소의 개수와 각 원소의 값을 출력합니다
(물론 프로그램이 시작되는 최초에는 원소의 개수가 0개입니다.)
1 #pragma warning(disable:4996)
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 void doInput(int count, int *value);
6
7 int main()
8 {
9 // 두개의 입력값
10 int i = 0, pvalue = 0;
11 int count = 0, new_count = 0;
12 int *value = NULL;
13 int *value2 = NULL;
14
15 // 현재 원소의 개수 출력
16 // 원소의 개수. 0이하의 값이면 종료
17
18 do
19 {
20 printf("현재 원소의 개수는 %d개입니다.\n", count);
21 printf("원소의 개수는(0이하의 값을 입력하면 종료됩니다)?");
22 scanf("%d", &count); //count : 원소
23
24
25
26 if (count > 0) // 원소의 값이 0보다 클때
27 {
28
29 value = (int*)malloc(sizeof(int)*count); // 메모리 할당
30
31 if (count > new_count) // 최초의 원소의 값이 새로운 원소의 값보다 클때
32 {
33 value2 = (int*)realloc(value, sizeof(int)* count);
// value 초기값으로 하여 메모리 확장
34 }
35 if (NULL != value2) // value2 가 NULL 이 아닌지 체크
36 {
37 value = value2;
38 for (i = new_count; i < count; i++) // 새로운 원소 ++
39 {
40 printf("%d번째 원소의 값은? ", i);
41 scanf("%d", &pvalue);
42 *(value + i) = pvalue;
43 }
44 for (i = 0; i < count; i++)
45 {
46 printf("[%d] %d \n", i, pvalue);
47 }
48 }
49 else
50 {
51 printf("메모리 할당에 실패하였습니다. \n");
52 }
53
54 }
55
56
57 new_count = count;
58
59 } while (count > 0);
60 if (NULL != value) free(value); // 메모리 해제
61
62 return 0;
63 }
64
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 void doInput(int count, int *value);
6
7 int main()
8 {
9 // 두개의 입력값
10 int i = 0, pvalue = 0;
11 int count = 0, new_count = 0;
12 int *value = NULL;
13 int *value2 = NULL;
14
15 // 현재 원소의 개수 출력
16 // 원소의 개수. 0이하의 값이면 종료
17
18 do
19 {
20 printf("현재 원소의 개수는 %d개입니다.\n", count);
21 printf("원소의 개수는(0이하의 값을 입력하면 종료됩니다)?");
22 scanf("%d", &count); //count : 원소
23
24
25
26 if (count > 0) // 원소의 값이 0보다 클때
27 {
28
29 value = (int*)malloc(sizeof(int)*count); // 메모리 할당
30
31 if (count > new_count) // 최초의 원소의 값이 새로운 원소의 값보다 클때
32 {
33 value2 = (int*)realloc(value, sizeof(int)* count);
// value 초기값으로 하여 메모리 확장
34 }
35 if (NULL != value2) // value2 가 NULL 이 아닌지 체크
36 {
37 value = value2;
38 for (i = new_count; i < count; i++) // 새로운 원소 ++
39 {
40 printf("%d번째 원소의 값은? ", i);
41 scanf("%d", &pvalue);
42 *(value + i) = pvalue;
43 }
44 for (i = 0; i < count; i++)
45 {
46 printf("[%d] %d \n", i, pvalue);
47 }
48 }
49 else
50 {
51 printf("메모리 할당에 실패하였습니다. \n");
52 }
53
54 }
55
56
57 new_count = count;
58
59 } while (count > 0);
60 if (NULL != value) free(value); // 메모리 해제
61
62 return 0;
63 }
64
※ '기존 원소의 개수보다 작거나 같으면' 의 조건은 다음에 하기로..
0 개의 댓글: