[C][math.h] 2차원 방정식 근 구하기

stack overflow/C 2012. 8. 30. 16:04 posted by Allen Park



root_src.cpp






#include <stdio.h>

#include <math.h>



void rooter(double a, double b, double c)

{

double x, pan = (pow(b, 2) - (4 * a * c));


printf("판별식 값 : %lf\n", pan);

if(pan > 0) {

x = (-b + (sqrt(pan))) / (2 * a);

printf("실근 1 : %lf\n", x);

x = (-b - (sqrt(pan))) / (2 * a);

printf("실근 2 : %lf\n", x);

} else if(pan == 0) {

x = (-b + (sqrt(pan))) / (2 * a);

printf("중근 : %lf\n", x);

} else {

double sil, huh;

pan = -pan;

sil = -b / (2 * a);

huh = pan / (2 * a);

printf("허근 1 : %lf + %lfi\n", sil, huh);

printf("허근 2 : %lf - %lfi\n", sil, huh);

}

}



int main()

{

double a, b, c;


while(1) {

printf("2차 방정식의 계수 3개 입력 : ");

scanf("%lf %lf %lf", &a, &b, &c);

rooter(a, b, c);

}


return 0;

}




[C][단순연결리스트] 다항식더하기

stack overflow/C 2012. 8. 10. 04:28 posted by Allen Park


Polynomia_src.cpp












  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <conio.h>



  4. typedef struct node {

  5. int gs;  // 계수

  6. int js;  // 지수

  7. struct node *next;

  8. } NODE;

  9. NODE *start[3] = {NULL};

  10. int cnt[3] = {0};

  11. bool rage_flag = false;



  12. void del(int i);

  13. void init(int i);

  14. void rage();

  15. void insert(int i, int g, int j);

  16. void print();



  17. void init(int i)

  18. {

  19. NODE *del, *cur = start[i];


  20. if(start[i] == NULL)

  21. return;

  22. else {

  23. while(cur->next != NULL) {

  24. del = cur;

  25. cur = cur->next;

  26. free(del);

  27. }

  28. del = cur;

  29. start[i] = NULL;

  30. free(del);

  31. }

  32. }



  33. void del(int i)

  34. {

  35. NODE *del, *cur = start[i];


  36. while(cur->next != NULL) {

  37. if(cur->next->gs == 0) {

  38. del = cur->next;

  39. cur->next = del->next;

  40. free(del);

  41. cnt[i]--;

  42. return;

  43. }

  44. cur = cur->next;

  45. }


  46. if(start[i]->gs == 0) {

  47. del = start[i];

  48. start[i] = start[i]->next;

  49. free(del);

  50. cnt[i]--;

  51. return;

  52. }

  53. }



  54. void rage()

  55. {

  56. int i;

  57. if(start[0] == NULL || start[1] == NULL) {

  58. printf("먼저 A랑 B를 채워\n");

  59. return;

  60. }

  61. init(2);

  62. for(i = 0; i < 2; i++) {

  63. NODE *cur = start[i];

  64. while(cur->next != NULL) {

  65. insert(2, cur->gs, cur->js);

  66. cur = cur->next;

  67. }

  68. insert(2, cur->gs, cur->js);

  69. }

  70. rage_flag = true;

  71. }



  72. void insert(int i, int g, int j)

  73. {

  74. NODE *newnode, *cur;

  75. newnode = (NODE*)malloc(sizeof(NODE));

  76. newnode->next = NULL;

  77. newnode->gs = g;

  78. newnode->js = j;

  79. cur = start[i];

  80. rage_flag = false;


  81. if(start[i] != NULL) {

  82. while(cur->next != NULL) {

  83. if(cur->js == j) {

  84. cur->gs += g;

  85. if(cur->gs == 0)

  86. del(i);

  87. return;

  88. }

  89. cur = cur->next;

  90. }

  91. if(cur->js == j) {

  92. cur->gs += g;

  93. if(cur->gs == 0)

  94. del(i);

  95. return;

  96. }

  97. cur = start[i];

  98. }

  99. if(start[i] == NULL || start[i]->js < newnode->js) {

  100. newnode->next = start[i];

  101. start[i] = newnode;

  102. cnt[i]++;

  103. return;

  104. }


  105. if(cur->js >= newnode->js) {

  106. while(cur->next != NULL) {

  107. if(cur->next->js <= newnode->js) {

  108. newnode->next = cur->next;

  109. cur->next = newnode;

  110. cnt[i]++;

  111. return;

  112. }

  113. cur = cur->next;

  114. }

  115. cur->next = newnode;

  116. cnt[i]++;

  117. }

  118. }



  119. void print()

  120. {

  121. int i, minus;


  122. for(i = 0; i < 3; i++) {

  123. NODE *cur = start[i];


  124. if(i == 0)

  125. printf("A = ");

  126. else if(i == 1)

  127. printf("B = ");

  128. else

  129. printf("C = ");


  130. if(start[i] == NULL) {

  131. if(i == 2) {

  132. printf("아직 합치지 않았어\n");

  133. continue;

  134. }

  135. printf("이 배열은 비어있어\n");

  136. continue;

  137. }

  138. else {

  139. if(i == 2 && !rage_flag) {

  140. printf("다시 합쳐\n");

  141. continue;

  142. }

  143. }

  144. printf("%dX^%d", cur->gs, cur->js);

  145. if(cur->next != NULL)

  146. cur = cur->next;

  147. else{

  148. printf("\n");

  149. continue;

  150. }


  151. while(cur->next != NULL) {

  152. if(cur->gs > 0) {

  153. minus = cur->gs;

  154. printf(" + ");

  155. }

  156. else if(cur->gs < 0) {

  157. minus = -cur->gs;

  158. printf(" - ");

  159. }

  160. printf("%dX^%d", minus, cur->js);

  161. cur = cur->next;

  162. }

  163. if(cur->gs > 0) {

  164. minus = cur->gs;

  165. printf(" + ");

  166. }

  167. else if(cur->gs < 0) {

  168. minus = -cur->gs;

  169. printf(" - ");

  170. }

  171. printf("%dX^%d\n", minus, cur->js);

  172. }

  173. }



  174. int main()

  175. {

  176. int sel, gs, js;


  177. while(1) {

  178. system("cls");

  179. puts("1. Insert A");

  180. puts("2. Insert B");

  181. puts("3. Print");

  182. puts("4. A + B");

  183. puts("5. Initialize");

  184. puts("6. Quit");

  185. printf("골라 : ");

  186. scanf("%d", &sel);

  187. fflush(stdin);


  188. switch(sel) {

  189. case 1:

  190. printf("식 A 입력\n");

  191. printf("계수 : ");

  192. scanf("%d", &gs);

  193. fflush(stdin);

  194. printf("지수 : ");

  195. scanf("%d", &js);

  196. insert(0, gs, js);

  197. printf("식 A에 추가했다\n");

  198. break;

  199. case 2:

  200. printf("식 B 입력\n");

  201. printf("계수 : ");

  202. scanf("%d", &gs);

  203. fflush(stdin);

  204. printf("지수 : ");

  205. scanf("%d", &js);

  206. insert(1, gs, js);

  207. printf("식 B에 추가했어\n");

  208. break;

  209. case 3:

  210. print();

  211. break;

  212. case 4:

  213. if(rage_flag) {

  214. printf("이미 더했어\n");

  215. getch();

  216. continue;

  217. }

  218. rage();

  219. printf("두 식을 더했어\n");

  220. break;

  221. case 5:

  222. init(0);

  223. init(1);

  224. init(2);

  225. printf("모두 초기화했어\n");

  226. break;

  227. case 6:

  228. exit(1);

  229. }

  230. getch();

  231. }

  232. return 0;

  233. }


doubly_linked_list_src.cpp










  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <conio.h>



  4. typedef struct node {

  5. int key;

  6. struct node *prev;

  7. struct node *next;

  8. } DNODE;

  9. DNODE *start = NULL;

  10. int cnt = 0;



  11. void insert()  // 오름차순 정렬삽입

  12. {

  13. DNODE *newnode, *cur;

  14. newnode = (DNODE*)malloc(sizeof(DNODE));

  15. newnode->prev = newnode->next = NULL;

  16. cur = start;


  17. printf("삽입할 정수를 입력해 : ");

  18. scanf("%d", &newnode->key);

  19. fflush(stdin);


  20. if(start == NULL || start->key > newnode->key) {

  21. newnode->next = start;

  22. start = newnode;

  23. printf("맨 앞에 삽입됐다\n");

  24. cnt++;

  25. return;

  26. }


  27. if(cur->key <= newnode->key) {

  28. while(cur->next != NULL) {

  29. if(cur->next->key >= newnode->key) {

  30. newnode->prev = cur;

  31. newnode->next = cur->next;

  32. cur->next->prev = newnode;

  33. cur->next = newnode;

  34. cnt++;

  35. printf("중간에 삽입됐다\n");

  36. return;

  37. }

  38. cur = cur->next;

  39. }


  40. newnode->prev = cur;

  41. cur->next = newnode;

  42. printf("맨 끝에 삽입됐다\n");

  43. cnt++;

  44. }

  45. }



  46. void print()

  47. {

  48. DNODE *cur = start;


  49. if(start == NULL) {

  50. printf("배열이 비어 있어서 삭제못해\n");

  51. return;

  52. }


  53. while(cur->next != NULL) {

  54. printf("%d -> ", cur->key);

  55. cur = cur->next;

  56. }

  57. printf("%d", cur->key);

  58. }



  59. void del()

  60. {

  61. int k;

  62. bool flag = false;

  63. DNODE *del, *cur = start;


  64. if(start == NULL) {

  65. printf("배열이 비어 있어서 출력못해\n");

  66. return;

  67. }


  68. printf("삭제할 정수를 입력해 : ");

  69. scanf("%d", &k);

  70. fflush(stdin);


  71. while(cur->next != NULL) {

  72. if(cur->next->key == k) {

  73. del = cur->next;

  74. cur->next = del->next;

  75. printf("배열의 %d를 삭제한다\n", del->key);

  76. free(del);

  77. cnt--;

  78. flag = true;

  79. }

  80. else

  81. cur = cur->next;

  82. }


  83. if(start->key == k) {

  84. del = start;

  85. start = start->next;

  86. printf("배열의 %d를 삭제한다\n", del->key);

  87. free(del);

  88. cnt--;

  89. flag = true;

  90. }

  91. if(start != NULL)

  92. printf("start 노드의 key 값 : %d\n", start->key);


  93. if(!flag)

  94. printf("%d는 배열에 없어\n", k);

  95. }



  96. int main()

  97. {

  98. int sel;


  99. while(1) {

  100. system("cls");

  101. puts("1. Insert");

  102. puts("2. Print");

  103. puts("3. Delete");

  104. puts("4. Quit");

  105. printf("골라 : ");

  106. scanf("%d", &sel);

  107. fflush(stdin);


  108. switch(sel) {

  109. case 1: insert(); break;

  110. case 2: print();  break;

  111. case 3: del();    break;

  112. case 4: exit(1);

  113. }


  114. getch();

  115. }


  116. return 0;

  117. }






linked_list_src.cpp










  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <conio.h>



  4. typedef struct node {

  5. int key;

  6. struct node *next;

  7. }NODE;

  8. NODE *start = NULL;

  9. int cnt = 0;



  10. void insert()

  11. {

  12. NODE *newnode, *cur;

  13. newnode = (NODE*)malloc(sizeof(NODE));


  14. printf("\n\t정수를 입력해 : ");

  15. scanf("%d", &newnode->key);

  16. fflush(stdin);

  17. newnode->next = NULL;  // 맨 뒤에 붙으므로 넥스트는 NULL


  18. if(start == NULL) {

  19. start = newnode;

  20. printf("\n\t배열이 비어 있어 첫 원소로 %d 삽입했어.\n", newnode->key);

  21. }

  22. else {

  23. cur = start;

  24. while(cur->next != NULL) {

  25. cur = cur->next;

  26. }

  27. cur->next = newnode;

  28. printf("\n\t배열의 맨 뒤에 %d 삽입했어.\n", newnode->key);

  29. }


  30. cnt++;  // 추가된 갯수 업데이트

  31. }



  32. void print()

  33. {

  34. NODE *cur;

  35. if(start == NULL) {

  36. printf("\n\t배열이 비어 있어서 출력할게 없어.\n");

  37. return;

  38. }

  39. cur = start;

  40. printf("\n\t");

  41. while(cur->next != NULL) {

  42. printf("%d -> ", cur->key);

  43. cur = cur->next;

  44. }

  45. printf("%d\n\t총 %d개야.", cur->key, cnt);

  46. }



  47. void sort()

  48. {

  49. int i, j;

  50. NODE *cur, **arr, *temp;

  51. arr = (NODE**)malloc(cnt * sizeof(NODE*));


  52. if(cnt <= 0) {

  53. printf("\n\t배열이 비어 있어 정렬할게 없어.\n");

  54. return;

  55. }


  56. cur = start;

  57. for(i = 0; i < cnt; i++) {

  58. arr[i] = cur;

  59. cur = cur->next;

  60. }


  61. for(i = 0; i <cnt; i++) {

  62. printf("%d ", arr[i]->key);

  63. }

  64. for(i = 0; i < cnt - 1; i++) {

  65. for(j = i + 1; j < cnt; j++) {

  66. if(arr[i]->key <= arr[j]->key) {

  67. temp = arr[i];

  68. arr[i] = arr[j];

  69. arr[j] = temp;

  70. }

  71. }

  72. }


  73. for(i = 0; i < cnt; i++) {

  74. printf("%d ", arr[i]->key);

  75. }


  76. cur = start;

  77. for(start = arr[0], cur = start, i = 1; i < cnt; i++, cur = cur->next)

  78. cur->next = arr[i];

  79. cur->next = NULL;


  80. printf("\n\t배열이 내림차순으로 정렬되었어.\n");


  81. free(arr);

  82. }



  83. int main()

  84. {

  85. int sel;


  86. while(1) {

  87. system("cls");

  88. puts("MENU");

  89. puts("1. Insert");

  90. puts("2. Print");

  91. puts("3. Sort");

  92. puts("4. Quit");

  93. printf("선택해 : ");

  94. scanf("%d", &sel);

  95. fflush(stdin);


  96. switch(sel) {

  97. case 1: insert(); break;

  98. case 2: print();  break;

  99. case 3: sort();   break;

  100. case 4: exit(1);

  101. }

  102. getch();

  103. }

  104. return 0;

  105. }



bingo_src.cpp








  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <time.h>



  4. void init_shuffle(int (*user1)[5], int (*user2)[5]) //2차원 배열 넘기기 (Call by reference)

  5. {

  6. srand((unsigned)time(NULL));

  7. int i, j, k, w = 0, tmp, picked[25] = {0}; //picked 배열에 선택 된 수를 저장

  8. bool flag = false; //picked 배열에 이미 저장된 숫자가 뽑힐 경우 true


  9. for(i = 0; i < 5; i++) { //user1 빙고판 생성

  10. for(j = 0; j < 5; j++) {

  11. while(1) {

  12. tmp = (rand() % 50) + 1;

  13. for(k = 0; k < 25; k++) {

  14. if(tmp == picked[k]) flag = true;

  15. }

  16. if(flag) {

  17. flag = false;

  18. continue; //중복이면 다시 while 첫 부분으로

  19. }

  20. else {

  21. picked[w++] = user1[i][j] = tmp;

  22. break;    //안중복이면 뽑힌거 저장하고 while 이탈

  23. }

  24. }

  25. }

  26. }


  27. w = 0;

  28. for(i = 0; i < 25; i++) {

  29. picked[i] = 0;

  30. }


  31. for(i = 0; i < 5; i++) {

  32. for(j = 0; j < 5; j++) {

  33. while(1) {

  34. tmp = (rand() % 50) + 1;

  35. for(k = 0; k < 25; k++) {

  36. if(tmp == picked[k]) flag = true;

  37. }

  38. if(flag) {

  39. flag = false;

  40. continue;

  41. }

  42. else {

  43. picked[w++] = user2[i][j] = tmp;

  44. break;

  45. }

  46. }

  47. }

  48. }

  49. }



  50. void prnt_map(int (*user1)[5], int (*user2)[5])

  51. {

  52. int i, j;


  53. system("cls");

  54. for(i = 0; i < 5; i++) {

  55. for(j = 0; j < 5; j++) {

  56. if(user1[i][j] == 0) printf("\t*");

  57. else printf("\t%d", user1[i][j]);

  58. }

  59. printf("\n");

  60. }

  61. printf("\n\n\n");

  62. for(i = 0; i < 5; i++) {

  63. for(j = 0; j < 5; j++) {

  64. if(user2[i][j] == 0) printf("\t*");

  65. else printf("\t%d", user2[i][j]);

  66. }

  67. printf("\n");

  68. }

  69. }



  70. int check_bingo(int user[5][5]) //2차원 배열 넘기기 (Call by value)

  71. {

  72. int i, j, sum = 0, bingo = 0;;


  73. for(i = 0; i < 5; i++) {

  74. for(j = 0; j < 5; j++) {

  75. sum += user[i][j];

  76. }

  77. if(sum == 0) {

  78. bingo++;

  79. }

  80. else         sum = 0;

  81. }


  82. for(j = 0; j < 5; j++) {

  83. for(i = 0; i < 5; i++) {

  84. sum += user[i][j];

  85. }

  86. if(sum == 0) {

  87. bingo++;

  88. }

  89. else         sum = 0;

  90. }

  91. sum = 0;

  92. for(i = 0; i < 5; i++) {

  93. sum += user[i][i];

  94. }

  95. if(sum == 0) {

  96. bingo++;

  97. }

  98. else         sum = 0;


  99. sum = 0;

  100. for(i = 4, j = 0; i > -1, j < 5; i--, j++) {

  101. sum += user[i][j];

  102. }

  103. if(sum == 0) {

  104. bingo++;

  105. }


  106. return bingo;

  107. }



  108. void call_number(int (*user1)[5], int (*user2)[5])

  109. {

  110. int i, j, num;

  111. bool flag = false;


  112. while(!flag) {

  113. printf("입력해라 : ");

  114. scanf("%d", &num);


  115. for(i = 0; i < 5; i++) {

  116. for(j = 0; j < 5; j++) {

  117. if(num == user1[i][j]) {

  118. user1[i][j] = 0;

  119. flag = true;

  120. }

  121. }

  122. }

  123. if(!flag) printf("없는 숫자다.\n");

  124. else {

  125. for(i = 0; i < 5; i++) {

  126. for(j = 0; j < 5; j++) {

  127. if(num == user2[i][j]) user2[i][j] = 0;

  128. }

  129. }

  130. }

  131. }

  132. }



  133. void computers_revange(int (*user)[5], int (*followed)[5])

  134. {

  135. int i, j, ind, tmp_cmp, tmp_gst, AIpick, cnt = 0, compr[12] = {0}, ghost[12];


  136. for(i = 0; i < 12; i++) {

  137. ghost[i] = i;

  138. }


  139. for(i = 0; i < 5; i++) {

  140. for(j = 0; j < 5; j++) {

  141. if(user[i][j] == 0) {

  142. compr[cnt]++;

  143. }

  144. }

  145. cnt++;

  146. }

  147. for(j = 0; j < 5; j++) {

  148. for(i = 0; i < 5; i++) {

  149. if(user[i][j] == 0) {

  150. compr[cnt]++;

  151. }

  152. }

  153. cnt++;

  154. }


  155. for(i = 0; i < 5; i++) {

  156. if(user[i][i] == 0) {

  157. compr[cnt]++;

  158. }

  159. }

  160. cnt++;


  161. for(i = 4, j = 0; i > -1, j < 5; i--, j++) {

  162. if(user[i][j] == 0) {

  163. compr[cnt]++;

  164. }

  165. }


  166. for(i = 0; i < 11; i++) {

  167. for(j = i + 1; j < 12; j++) {

  168. if(compr[i] < compr[j]) {

  169. tmp_cmp = compr[i];

  170. tmp_gst = ghost[i];

  171. compr[i] = compr[j];

  172. ghost[i] = ghost[j];

  173. compr[j] = tmp_cmp;

  174. ghost[j] = tmp_gst;

  175. }

  176. }

  177. }

  178. for(i = 0; i < 12; i++) printf("%d ", compr[i]);


  179. for(i = 0; i < 12; i++) {

  180. if(compr[i] < 5) {

  181. ind = ghost[i];

  182. break;

  183. }

  184. else continue;

  185. }


  186. if(ind >=0 && ind < 5) {

  187. for(i = 0; i < 5; i++) {

  188. if(user[ind][i] != 0) {

  189. AIpick = user[ind][i];

  190. user[ind][i] = 0;

  191. break;

  192. }

  193. else continue;

  194. }

  195. }

  196. else if(ind >= 5 && ind < 10) {

  197. for(i = 0; i < 5; i++) {

  198. if(user[i][ind - 5] != 0) {

  199. AIpick = user[i][ind - 5];

  200. user[i][ind - 5] = 0;

  201. break;

  202. }

  203. else continue;

  204. }

  205. }

  206. else if(ind == 10) {

  207. for(i = 0; i < 5; i++) {

  208. if(user[i][i] != 0) {

  209. AIpick = user[i][i];

  210. user[i][i] = 0;

  211. break;

  212. }

  213. else continue;

  214. }

  215. }

  216. else {

  217. for(i = 4, j = 0; i > -1, j < 5; i--, j++) {

  218. if(user[i][j] != 0) {

  219. AIpick = user[i][i];

  220. user[i][j] = 0;

  221. break;

  222. }

  223. else continue;

  224. }

  225. }


  226. for(i = 0; i < 5; i++) {

  227. for(j = 0; j < 5; j++) {

  228. if(followed[i][j] == AIpick) {

  229. followed[i][j] = 0;

  230. }

  231. }

  232. }

  233. }



  234. int main()

  235. {

  236. int user1[5][5];

  237. int user2[5][5];

  238. int a = 0;


  239. init_shuffle(user1, user2); //빙고 판 생성

  240. prnt_map(user1, user2);


  241. while(check_bingo(user1) <= 4 && check_bingo(user2) <= 4) {

  242. call_number(user1, user2);

  243. computers_revange(user2, user1);

  244. prnt_map(user1, user2);

  245. printf("내 빙고 = %d\t적 빙고 = %d\n", check_bingo(user1), check_bingo(user2));

  246. }

  247. if(check_bingo(user1) == check_bingo(user2)) printf("비겼다\n");

  248. else if(check_bingo(user1) > check_bingo(user2)) printf("이겼다\n");

  249. else printf("졌다\n");


  250. return 0;

  251. }






아 미친 못 이김




[C][getchar()/putchar()] 주석 제거기

stack overflow/C 2012. 8. 5. 03:39 posted by Allen Park

comment_remover_src.cpp







  1. #include <stdio.h>

  2. #define OUT 0
  3. #define IN  1

  4. int main()
  5. {
  6. char ch, prm, sub;
  7. int state = OUT;
  8. bool line_flag = false;
  9. bool star_flag = false;
  10. while( (ch = getchar()) != '\n' ) {
  11. if( state == IN ) {
  12. if( ch == '*' ) {
  13. prm = getchar();
  14. if( prm == '/' && !line_flag) {
  15. state = OUT;
  16. }
  17. else if( prm == '*' && !star_flag) {
  18. star_flag = true;
  19. }
  20. }
  21. else if( ch == '/' ) {
  22. if(star_flag) {
  23. state = OUT;
  24. star_flag = false;
  25. }
  26. }
  27. else star_flag = false;
  28. }
  29. else { //(state == OUT)
  30. if( ch == '/' ) {
  31. sub = getchar();
  32. if( sub == '*' ) {
  33. state = IN; 
  34. }
  35. else if ( sub == '/' ) {
  36. state = IN;
  37. line_flag = true;
  38. }
  39. else {
  40. putchar( ch );
  41. putchar( sub );
  42. }
  43. }
  44. else putchar( ch );
  45. }
  46. }

  47. printf("\n");

  48. return 0;
  49. }







  1. #include <stdio.h>


  2. int main()

  3. {

  4. int c, i, j, arr_cnt[26] = {0};


  5. printf("Input things : \n");

  6. while((c = getchar()) != EOF) {

  7. if('a' <= c && c <= 'z') {

  8. c -= 97;

  9. arr_cnt[c]++;

  10. }

  11. else if('A' <= c && c <= 'Z') {

  12. c -= 65;

  13. arr_cnt[c]++;

  14. }

  15. else continue;

  16. }


  17. printf("<PRINT>\n");

  18. for(i = 0; i <= 25; i++) {

  19. if(arr_cnt[i] > 0) {

  20. printf("%c : ", i + 65);

  21. for(j = 1; j <= arr_cnt[i]; j++) {

  22. printf("*");

  23. }

  24. printf("\n");

  25. }

  26. else continue;

  27. }


  28. return 0;

  29. }









  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <time.h>



  4. void selection_sort(int arr[])

  5. {

  6. int i, j, tmp_prime, tmp_ghost;

  7. static int arr_ghost[46];


  8. for(i = 0; i <= 45; i++) {

  9. arr_ghost[i] = i;

  10. }


  11. for(i = 0; i < 45; i++) {

  12. for(j = i + 1; j < 46; j++) {

  13. if(arr[i] < arr[j]) {

  14. tmp_prime = arr[i];

  15. tmp_ghost = arr_ghost[i];

  16. arr[i] = arr[j];

  17. arr_ghost[i] = arr_ghost[j];

  18. arr[j] = tmp_prime;

  19. arr_ghost[j] = tmp_ghost;

  20. }

  21. }

  22. }


  23. for(i = 0; i <= 6; i++) {

  24. printf("%02d : %d번 뽑힘\n", arr_ghost[i], arr[i]);

  25. }

  26. }


  27. int main()

  28. {

  29. int arr[1000] = {0};

  30. int arrr[46] = {0};

  31. int i, f;


  32. srand((unsigned)time(NULL));


  33. for(i = 0; i <= 999; i++) {

  34. arr[i] = rand() % 45 + 1;

  35. f = arr[i];

  36. arrr[f]++;

  37. }


  38. selection_sort(arrr);


  39. return 0;

  40. }