c言語で神経衰弱
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
#include <stdio.h> char a[10]; char gained[10]; int pend = -1; void disp(int pend1, int pend2){ int i; for(i=0; i<10; i++){ if(i==5){ printf("\n"); } if(gained[i]){ printf(" | %c| ", a[i]); }else if((pend1 == i) || (pend2 == i)){ printf(" |>%c| ", a[i]); }else{ printf(" |%2d| ", i+1); } } printf("\n"); printf("\n"); } void init(){ a[0] = 'a'; a[1] = 'b'; a[2] = 'c'; a[3] = 'd'; a[4] = 'e'; a[5] = 'e'; a[6] = 'a'; a[7] = 'b'; a[8] = 'c'; a[9] = 'd'; int i; for(i=0; i<10; i++){ gained[i] = 0; } } void init_chose(){ pend = -1; } int isValidPair(int first, int second){ if((first != second) && (a[first] == a[second])){ return 1; } return 0; } int isFinish(){ int i; for(i=0; i<10; i++){ if(1 != gained[i]){ return 0; } } return 1; } int main(void){ // Your code here! init(); int input = -1; while(1){ disp(pend, -1); printf("カードを選んでください (1〜10):"); scanf("%d", &input); if(input<1 || 10<input){ printf("無効な値です\n"); continue; } input--; if(gained[input]){ printf("すでに取得しています\n"); continue; } if(pend != -1){ if(isValidPair(pend, input)){ // 一致 printf("当たりです\n"); gained[pend] = 1; gained[input] = 1; if(isFinish()){ disp(-1, -1); break; } }else{ // 不一致 disp(pend, input); printf("外れです\n"); } pend = -1; }else{ pend = input; } } return 0; } |
このプログラムの流れがわからないので、教えて頂けますでしょうか?
できれば意訳で教えていただけるとありがたいです。