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. }

말파리

epicureanism 2012. 8. 2. 05:08 posted by Allen Park





말파이트는 라인 말고 서폿이나 정글로 해야 제 맛!


아리는 선 어비셜 가야 제 맛!!


포풍!!!



'epicureanism' 카테고리의 다른 글

스카이림 + 던가드 + 히스파이어  (0) 2013.03.20