Test/C

369 게임 박수 표현 및 횟수 출력

kiostory 2016. 6. 29. 19:53

 

369game.exe

 

* 그 흔한 369게임.

-------------------------------------------------------

이클립스와 Mingw, JDK로 환경 구성후 첫번째 삽실 프로그램.

회사에서 개인역량 평가를 2016년 하반기부터 시작함에 따라, 입사이후 조금 익혔던 C/C++ 프로그래밍을 다시 시작하다.

 

도스창에서  --> 실행파일명 숫자 형식으로 입력하면 그 숫자까지 369게임을 출력하고

박수친 횟수를 출력하는 프로그램.

 

  - 1 미만(마이너스 포함)을 입력하면 1까지 게임을 수행

  - 10000 초과 입력하면 10000까지 게임을 수행

  - 인자(숫자)를 입력하지 않으면 않았다고 출력

  - 인자를 띄워쓰기로 2개이상 입력하면 잘못입력했다고 출력

 

* 실행하면 아래와 같이 동작합니다.

 

C:\369game\Debug>369game 200
1 2 짝 4 5 짝 7 8 짝 10
11 12 짝 14 15 짝 17 18 짝 20
21 22 짝 24 25 짝 27 28 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 40
41 42 짝 44 45 짝 47 48 짝 50
51 52 짝 54 55 짝 57 58 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 70
71 72 짝 74 75 짝 77 78 짝 80
81 82 짝 84 85 짝 87 88 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 100
101 102 짝 104 105 짝 107 108 짝 110
111 112 짝 114 115 짝 117 118 짝 120
121 122 짝 124 125 짝 127 128 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 140
141 142 짝 144 145 짝 147 148 짝 150
151 152 짝 154 155 짝 157 158 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 170
171 172 짝 174 175 짝 177 178 짝 180
181 182 짝 184 185 짝 187 188 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 200


박수친 횟수는 총 120번입니다.

 

 

 

/*******************************************************************************************
*
*  제  목  :  369 게임 박수 수량 확인 프로그램
*
*  사  번  :
*
*  이  름  : kioeom
*
*  소  속  :
*
********************************************************************************************/


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

 long conv;
 if(argc==2) {     //파일명과 인자를 포함해 아규먼크 카운트가 2이면 정상 입력한 것으로 파악
  conv = strtol(argv[1],NULL,10);     //char 형식으로 받은 인자를 long타입 숫자로 converting
 }

    if(argc==1) {     //파일명만 입력하면 표시
     printf("실행파일명 뒤에 인수를 입력하지 않으셨습니다.\n1~10000 사이에서 369게임을 진행할 최종 숫자를 입력하십시오.\n");
     exit(1);
    }

    else if (argc>2) {     // 인자를 2개 이상 입력하면 표시
     printf("%d개의 인수를 입력하셨군요. \n1~10000까지의 숫자중 369게임을 몇까지 할것인지 최종 숫자를 하나만 입력하시오.\n",argc-1);
     exit(1);
    }

    else if(conv < 1) {     //인자가 1보다 작으면 1로 간주
     conv = 1;
    }

    else if(conv > 10000) {     //인자가 10000보다 크면 10000으로 간주
     conv = 10000;
    }

 


 int i,j,cnt,ttl=0,a=0,b=0,c=0,d=0;

    for(i=1;i<=conv;i++)    //입력한 수까지 돌린다는가정입니다.
    {
     cnt=0;

     d=i%10; //1자리 분리
     c=(i%100-i%10)/10; //10자리 분리
     b=(i%1000-i%100)/100; //100자리 분리
     a=(i%10000-i%1000)/1000; //1000자리 분리

     if(d%3==0 && d>0) cnt++;     //1의자리가 박수칠 타이밍이고 0이 아니면 카운트
     if(c%3==0 && c>0) cnt++;     //10의자리가 박수칠 타이밍이고 0이 아니면 카운트
     if(b%3==0 && b>0) cnt++;     //100의자리가 박수칠 타이밍이고 0이 아니면 카운트
     if(a%3==0 && a>0) cnt++;     //1000의자리가 박수칠 타이밍이고 0이 아니면 카운트

     ttl=ttl+cnt;     //최종 박수친 횟수 누적을 위함

 if(cnt>0)     //박수칠 타이밍이 0이상 누적되었으면 해당 숫자대신 짝을 출력
     {
      for (j=1;j<=cnt;j++)
      {
       printf("짝");
      }
      printf(" ");
     }

     else
     {
      printf("%d",i);     //박수칠 숫자가 아니면 숫자를 출력
      printf(" ");     //숫자간 띄워쓰기
     }

     if(i%10==0)
      printf("\n");     //10개 숫자 출력시마다 줄바꿈
    }


      printf("박수친 횟수는 총 %d번입니다.",ttl);     //최종 박수친 총 횟수 출력

}


 

369game.exe
0.08MB