CHAPTER 11 - 0083tony/Core-C-Programming GitHub Wiki
- 1๋ฒ ๋ฌธ์
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ์ ์์ ์๋ฆฟ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int count_digits(int a) {
if (a == 0)
return 0;
else
return count_digits(a / 10) + 1;
}
int main(void) {
int a;
for (;;) {
printf("์ ์? ");
scanf("%d", &a);
if (a == 0)
break;
printf("count of dihits: %d\n", count_digits(a));
getchar();
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
์ ์? 12345
count of dihits: 5
์ ์? 10000000
count of dihits: 8
์ ์? 0
- 2๋ฒ ๋ฌธ์
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ์ ์์ ์๋ ๋ชจ๋ ์์ ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum_digits(int num, int a) {
if (num == 0)
return 0;
else
return num % a + sum_digits((num - num % a) / 10, a);
}
int main(void) {
int n, a = 10;
for (;;) {
printf("์ ์? ");
scanf_s("%d", &n);
if (n == 0)
break;
printf("sum of digits: %d\n", sum_digits(n, a));
getchar();
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
์ ์? 12345
sum of digits: 15
์ ์? 1000000
sum of digits: 1
์ ์? 0
- 3๋ฒ ๋ฌธ์
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ํผ๋ณด๋์น ์์ด์ n๋ฒ ํญ๊น์ง๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibonacci(int num) {
if (num == 0)
return 0;
else if (num == 1)
return 1;
else return fibonacci(num - 1) + fibonacci(num - 2);
}
int main(void) {
printf("ํผ๋ณด๋์น ์\n");
for (int i = 1; i <= 20; i++) {
printf("%d ", fibonacci(i));
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
ํผ๋ณด๋์น ์
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
- 4๋ฒ ๋ฌธ์
3๋ฒ ๋ฌธ์ ์ ํผ๋ณด๋์น ํ๋ก๊ทธ๋จ์ 'Dynamic Programming'์ ์ฌ์ฉํด ๊ฐ์ ์ํจ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
long long fibo[1000] = { 0,1,1, };
long long fibonacci(int num) {
if (num == 1 || num == 2)
return 1;
else if (fibo[num])
return fibo[num];
else
return fibo[num] = fibonacci(num - 1) + fibonacci(num - 2);
}
int main(void) {
int n;
printf("ํผ๋ณด๋์น ์๋ฅผ ์
๋ ฅํ์ธ์ ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
printf("%lld ", fibonacci(i));
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
ํผ๋ณด๋์น ์๋ฅผ ์
๋ ฅํ์ธ์ 50
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 12586269025
- 5๋ฒ ๋ฌธ์
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ์ฌ N์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int power(int num, int i) {
if (i == 0)
return 1;
else
return num * power(num, i - 1);
}
int main(void) {
int num;
printf("๋ฐ(base)? ");
scanf("%d", &num);
for (int i = 0; i < 10; i++) {
printf("%d ^ %d = %d\n", num, i, power(num, i));
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐ(base)? 2
2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128
2 ^ 8 = 256
2 ^ 9 = 512
- 6๋ฒ ๋ฌธ์
5๋ฒ ๋ฌธ์ ์ ๊ฑฐ๋ญ์ ๊ณฑ ํ๋ก๊ทธ๋จ์ 'Dynamic Programming'์ ์ฌ์ฉํด ๊ฐ์ ์ํจ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[10][10];
int power(int num, int i) {
if (i == 0)
return 1;
else
return arr[num][i] = num * power(num, i - 1);
}
int main(void) {
int num;
printf("๋ฐ(base)? ");
scanf("%d", &num);
for (int i = 0; i < 10; i++) {
printf("%d ^ %d = %d\n", num, i, power(num, i));
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐ(base)? 3
3 ^ 0 = 1
3 ^ 1 = 3
3 ^ 2 = 9
3 ^ 3 = 27
3 ^ 4 = 81
3 ^ 5 = 243
3 ^ 6 = 729
3 ^ 7 = 2187
3 ^ 8 = 6561
3 ^ 9 = 19683
- 7๋ฒ ๋ฌธ์
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ํผ๋ณด๋์น ์์ด๊ณผ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ตฌํ๋ ํจ์์ ํจ์ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibonacci(int num) {
if (num == 0)
return 0;
else if (num == 1)
return 1;
else return fibonacci(num - 1) + fibonacci(num - 2);
}
int power(int num, int i) {
if (i == 0)
return 1;
else
return num * power(num, i - 1);
}
int main(void) {
int (*fibo)(int);
int (*po)(int, int);
int num;
int result;
fibo = fibonacci;
po = power;
printf("๋ฐ(base)? ");
scanf("%d", &num);
for (int i = 0; i < 10; i++) {
result = po(num, i);
printf("%d ^ %d = %d\n", num, i, result);
}
printf("\n\n");
printf("ํผ๋ณด๋์น ์๋ฅผ ์
๋ ฅํ์ธ์ ");
scanf("%d", &num);
for (int i = 1; i <= num; i++) {
result = fibo(i);
printf("%d ", result);
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐ(base)? 10
10 ^ 0 = 1
10 ^ 1 = 10
10 ^ 2 = 100
10 ^ 3 = 1000
10 ^ 4 = 10000
10 ^ 5 = 100000
10 ^ 6 = 1000000
10 ^ 7 = 10000000
10 ^ 8 = 100000000
10 ^ 9 = 1000000000
ํผ๋ณด๋์น ์๋ฅผ ์
๋ ฅํ์ธ์ 20
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
- 8๋ฒ ๋ฌธ์
ํจ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํด, ์ ์ํ ๋ฐฐ์ด์ ํน์ ๊ฐ์ผ๋ก ์ฑ์ฐ๋ ํ๋ก๊ทธ๋จ
#include <stdio.h>
typedef int (*fill_array)(int);
int increment_it(int num) {
return num;
}
int increase_from_0(int num) {
return num + 1;
}
int squared(int num) {
return num * num;
}
int fill_0(int num) {
return num = 0;
}
int Function(int num, fill_array func) {
return func(num);
}
int main(void) {
fill_array func = NULL;
int num;
printf("๋ฐฐ์ด์ 0๋ถํฐ 1์ฉ ์ปค์ง๋ ๊ฐ์ผ๋ก ์ฑ์ธ ๋:\n");
for (int i = 0; i < 10; i++) {
func = increment_it;
num = Function(i, func);
printf("%d ", num);
}
printf("\n๋ฐฐ์ด์ ํ์ฌ ์์๋ณด๋ค 1๋งํผ ํฐ ๊ฐ์ผ๋ก ์ฑ์ธ ๋:\n");
for (int i = 0; i < 10; i++) {
func = increase_from_0;
num = Function(i, func);
printf("%d ", num);
}
printf("\n๋ฐฐ์ด์ ํ์ฌ ์์์ ์ ๊ณฑ์ผ๋ก ์ฑ์ธ ๋:\n");
for (int i = 1; i <= 10; i++) {
func = squared;
num = Function(i, func);
printf("%d ", num);
}
printf("\n๋ฐฐ์ด์ 0์ผ๋ก ์ฑ์ธ ๋:\n");
for (int i = 0; i < 10; i++) {
func = fill_0;
num = Function(i, func);
printf("%d ", num);
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐฐ์ด์ 0๋ถํฐ 1์ฉ ์ปค์ง๋ ๊ฐ์ผ๋ก ์ฑ์ธ ๋:
0 1 2 3 4 5 6 7 8 9
๋ฐฐ์ด์ ํ์ฌ ์์๋ณด๋ค 1๋งํผ ํฐ ๊ฐ์ผ๋ก ์ฑ์ธ ๋:
1 2 3 4 5 6 7 8 9 10
๋ฐฐ์ด์ ํ์ฌ ์์์ ์ ๊ณฑ์ผ๋ก ์ฑ์ธ ๋:
1 4 9 16 25 36 49 64 81 100
๋ฐฐ์ด์ 0์ผ๋ก ์ฑ์ธ ๋:
0 0 0 0 0 0 0 0 0 0
- 9๋ฒ ๋ฌธ์
๋ฌธ์์ด ๋ฐฐ์ด์ 'qsort' ํจ์๋ฅผ ์ด์ฉํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* a, const void* b) {
return (strcmp((char*)a, (char*)b));
}
int main(void) {
char MOVIE[5][20] = {
{"Avengers"},
{"MI:Fallout"},
{"Ant-Man"},
{"Bohemian Rhapsody"},
{"Insidious"}
};
printf("<<์ ๋ ฌ ์ >>\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", MOVIE[i]);
}
qsort((void*)MOVIE, 5, sizeof(MOVIE[0]), compare);
printf("\n<<์ ๋ ฌ ํ>>\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", MOVIE[i]);
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
<<์ ๋ ฌ ์ >>
Avengers
MI:Fallout
Ant-Man
Bohemian Rhapsody
Insidious
<<์ ๋ ฌ ํ>>
Ant-Man
Avengers
Bohemian Rhapsody
Insidious
MI:Fallout
- 10๋ฒ ๋ฌธ์
๋ฌธ์์ด ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ฆฌํ๊ณ , ํน์ ๋ฌธ์์ด์ 'bsearch'๋ฅผ ์ฌ์ฉํด ๊ฒ์ํ ํ ์์ ํ๋ ํ๋ก๊ทธ๋จ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* a, const void* b) {
return (strcmp((char*)a, (char*)b));
}
int main(void) {
char key_word[20];
char fixed_title[20];
char MOVIE[5][20] = {
{"Avengers"},
{"MI:Fallout"},
{"Ant-Man"},
{"Bohemian Rhapsody"},
{"Insidious"}
};
qsort((void*)MOVIE, 5, sizeof(MOVIE[0]), compare);
printf("<<์ํ ๋ชฉ๋ก>>\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", MOVIE[i]);
}
printf("์ ๋ชฉ? ");
scanf_s("%s", key_word, 20);
char* found = (char*)bsearch(key_word, MOVIE, 5, 20, compare);
getchar();
for (int i = 0; i < 5; i++) {
if (*found == *MOVIE[i]) {
printf("์์ ํ ์ ๋ชฉ? ");
scanf_s("%s", MOVIE[i], 20);
goto A;
}
}
A:
printf("\n");
qsort((void*)MOVIE, 5, sizeof(MOVIE[0]), compare);
printf("<<์ํ ๋ชฉ๋ก>>\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", MOVIE[i]);
}
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
<<์ํ ๋ชฉ๋ก>>
Ant-Man
Avengers
Bohemian Rhapsody
Insidious
MI:Fallout
์ ๋ชฉ? Ant-Man
์์ ํ ์ ๋ชฉ? Ant-Man and the Wasp
<<์ํ ๋ชฉ๋ก>>
Ant-Man
Avengers
Bohemian Rhapsody
Insidious
MI:Fallout
- 11๋ฒ ๋ฌธ์
๋ฉ์ธ ํจ์์ ๋ฌธ์์ด์ ๋ณ๊ฒฝ์ํค์ง ์๊ธฐ์ํด ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ , ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ํฉ์ณ์ ๋ฆฌํดํ๋ ํจ์ ํ๋ก๊ทธ๋จ.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* join_string(char* A, char* B) {
char* AB = NULL;
AB = (char*)malloc(sizeof(char) * 100);
if (AB == NULL)
return 0;
AB = strcat(A, B);
return AB;
}
int main(void) {
char A[100] = { "first string for join string function " };
char B[100] = { "second string for join string function " };
printf("์ฒซ ๋ฒ์งธ ๋ฌธ์์ด? %s\n", A);
printf("๋ ๋ฒ์งธ ๋ฌธ์์ด? %s\n", B);
printf("%s", join_string(A, B));
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
์ฒซ ๋ฒ์งธ ๋ฌธ์์ด? first string for join string function
๋ ๋ฒ์งธ ๋ฌธ์์ด? second string for join string function
first string for join string function second string for join string function
- 12๋ฒ ๋ฌธ์
๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ, ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ์ ์ํ ๋ฐฐ์ด์ 'memcpy' ํจ์๋ฅผ ์ฌ์ฉํด ํ๋์ ๋ฐฐ์ด๋ก ํฉ์น๊ณ ์ ๋ ฌ ํ ๋ฆฌํดํ๋ ํจ์ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* a, const void* b) {
return (strcmp((char*)a, (char*)b));
}
int* merge_array(int* A, int* B, int* AB) {
memcpy(AB, A, 40);
memcpy(AB + 5, B, 40); // A๋ฐฐ์ด์ ํฌ๊ธฐ์ธ 5๋ฅผ ๋ํด ๊ทธ ์ดํ์ ๋ฐฐ์ด์ B๊ฐ์ ์ ์ฅ
qsort((void*)AB, 40, sizeof(AB[0]), compare); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
return AB;
}
int main(void) {
int A[5] = { 1,3,5,7,9 };
int B[6] = { 2,4,6,8,10,12 };
int* AB = NULL;
AB = (int*)malloc(sizeof(int) * 40);
printf("arr1: ");
for (int i = 0; i < 5; i++) {
printf("%d ", A[i]);
}
printf("\narr2: ");
for (int i = 0; i < 6; i++) {
printf("%d ", B[i]);
}
merge_array(A, B, AB);
printf("\nmerged array: ");
for (int i = 0; i < 11; i++) {
printf("%d ", AB[i]);
}
free(AB); // ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํด์
return 0;
}
[์คํ ๊ฒฐ๊ณผ]
arr1: 1 3 5 7 9
arr2: 2 4 6 8 10 12
merged array: 1 1 2 3 3 4 5 6 7 8 9
- 13๋ฒ ๋ฌธ์
๋ฐฐ์ด์ ํ๊ณผ ์ด์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๊ณ 0~9์ฌ์ด์ ๋์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(void) {
// ํธ์ถํ ๋๋ง๋ค ๋ค๋ฅธ ๋์๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ ์ํด srand๋ก ์ด๊ธฐํ
srand((unsigned)time(NULL));
int height, width;
printf("๋ฐฐ์ด์ ํ ํฌ๊ธฐ? ");
scanf("%d", &height);
printf("๋ฐฐ์ด์ ์ด ํฌ๊ธฐ? ");
scanf("%d", &width);
int** AB = NULL;
// 2๋ฒ malloc()์ ํธ์ถํ๋ฉด 2์ฐจ์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์ ์ ์๋ค.
AB = (int**)malloc(sizeof(int*) * height);
for (int i = 0; i < height; i++) {
AB[i] = (int*)malloc(sizeof(int) * width);
}
for (int i = 0; i < height; i++) {
for (int k = 0; k < width; k++) {
AB[i][k] = rand() % 10;
printf("%d ", AB[i][k]);
}
printf("\n");
}
// ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํด์
free(AB);
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐฐ์ด์ ํ ํฌ๊ธฐ? 3
๋ฐฐ์ด์ ์ด ํฌ๊ธฐ? 10
7 2 3 2 0 4 9 0 2 5
4 5 1 4 6 5 9 8 8 0
4 4 5 2 5 4 8 4 6 7
- 14๋ฒ ๋ฌธ์
13๋ฒ ๋ฌธ์ ์ ํจ์ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ํ์ ์์์ ํฉ๊ณ์ ๊ฐ์ ์ด์ ์์์ ํฉ๊ณ๋ฅผ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(void) {
// ํธ์ถํ ๋๋ง๋ค ๋ค๋ฅธ ๋์๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ ์ํด srand๋ก ์ด๊ธฐํ
srand((unsigned)time(NULL));
int height, width;
int add1 = 0;
int add2 = 0;
printf("๋ฐฐ์ด์ ํ ํฌ๊ธฐ? ");
scanf("%d", &height);
printf("๋ฐฐ์ด์ ์ด ํฌ๊ธฐ? ");
scanf("%d", &width);
int** AB = NULL;
// 2๋ฒ malloc()์ ํธ์ถํ๋ฉด 2์ฐจ์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์ ์ ์๋ค.
AB = (int**)malloc(sizeof(int*) * height);
for (int i = 0; i < height; i++) {
AB[i] = (int*)malloc(sizeof(int) * width);
}
for (int i = 0; i < height; i++) {
for (int k = 0; k < width; k++) {
AB[i][k] = rand() % 10;
// ํ์ ๊ฐ์ ์ ์ฅ
add1 = AB[i][k] + add1;
printf("%5d", AB[i][k]);
}
printf(" ==> %3d\n", add1);
}
printf("--------------------------------------------------\n");
for (int i = 0; i < width; i++) {
for (int k = 0; k < height; k++) {
// ์ด์ ๊ฐ์ ์ ์ฅ
add2 = AB[k][i] + add2;
}
printf("%5d", add2);
}
// ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํด์
free(AB);
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐฐ์ด์ ํ ํฌ๊ธฐ? 3
๋ฐฐ์ด์ ์ด ํฌ๊ธฐ? 10
9 7 6 3 8 8 1 3 2 4 ==> 51
0 6 1 3 8 5 2 5 2 5 ==> 88
3 6 8 6 7 4 5 9 9 5 ==> 150
--------------------------------------------------
12 31 46 58 81 98 106 123 136 150
- 15๋ฒ ๋ฌธ์
ํฌ๊ธฐ๊ฐ 2์ธ ๋์ ๋ฉ๋ชจ๋ฆฌ ์์ฑ ํ ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ ๋ ๋ง๋ค ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2๋ฐฐ์ฉ ์ปค์ง๊ณ '-1'์ ์ ๋ ฅํ๋ฉด ์ง๊ธ๊น์ง ์ถ๊ฐ๋ ์์๋ค์ ํฉ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void extend_array(int** AB, int *size) {
int new_size = *size * 2;
// ๊ธฐ์กด์ AB๋ณด๋ค ๋ฐฐ์ด์ด 2๋ฐฐ ํฐ new_AB
int* new_AB = (int*)malloc(sizeof(int) * new_size);
for (int i = 0; i < *size; i++) {
// AB์ ๊ฐ์ new_AB๋ก ๋ณต์ฌ
new_AB[i] = (*AB)[i];
}
// AB ์ด๊ธฐํ, ๊ธฐ์กด ๊ฐ๋ณด๋ค 2๋ฐฐ ํฐ size๋ฅผ mainํจ์๋ก ์ ๋ฌ
free(*AB);
*AB = new_AB;
*size = (*size) * 2;
}
int main(void) {
int* AB = NULL;
int size = 2;
int i = 0;
int add = 0;
AB = (int*)malloc(sizeof(int) * size);
printf("๋ฐฐ์ด์ ์ถ๊ฐํ ์์? ");
for (;;) {
scanf("%d", &AB[i]);
// -1 ์ ์
๋ ฅํ๋ฉด ๋ฐฐ์ด ์ถ๊ฐ๋ฅผ ๋ฉ์ถค
if (AB[i] == -1)
break;
// i+1 ๊ณผ size๊ฐ ๊ฐ์ผ๋ฉด extend_array ํจ์๋ฅผ ํธ์ถ
if (i + 1 == size)
extend_array(&AB, &size);
i++;
}
printf("๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ: %d, ํ์ฌ ์ ์ฅ๋ ์์ ์: %d\n", size, i);
printf("๋ฐฐ์ด: ");
for (int k = 0; k < i; k++) {
// AB์ ์์๋ฅผ ์ถ๋ ฅํ๊ณ ๊ทธ ๊ฐ์ ํฉ์ add์ ์ ์ฅ
printf("%3d", AB[k]);
add = AB[k] + add;
}
printf("\n๋ฐฐ์ด์ ํฉ๊ณ: %d", add);
}
[์คํ ๊ฒฐ๊ณผ]
๋ฐฐ์ด์ ์ถ๊ฐํ ์์? 10 34 22 45 65 89 34 53 99 81 -1
๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ: 16, ํ์ฌ ์ ์ฅ๋ ์์ ์: 10
๋ฐฐ์ด: 10 34 22 45 65 89 34 53 99 81
๋ฐฐ์ด์ ํฉ๊ณ: 532