ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 로또 확률
    컴퓨터기초/#1 알고리즘 100선 2017. 2. 21. 17:59
    반응형
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    #define MAXROLL 100000
    void make_num(int*, int);
    
    int main()
    {
     int success_num[7];
     int try_num[6];
     int i, j, tryout = 0;
     int match, bonus;
     int grade[6] = {0,0,0,0,0,0};
     
     srand(time(NULL));
     make_num(&success_num, 7);
     
     for(tryout = 1; tryout < MAXROLL; tryout++)
     {
      match = 0;
      bonus = 0;
      
      make_num(&try_num[0],6);
      
      for(i = 0; i < 6; i++)
      {
       for(j = 0; j < 6; j++)
       {
        if(success_num[i] == try_num[j])
        {
         match++;
        }
       }
      }
      
      for(j = 0; j < 6; j++)
      {
       if(success_num[7] == try_num[j])
       {
        bonus = 1;
        break;
       }
      }
      
      if(match == 6) // 6숫자가 맞을 경우 1등
      {
       grade[0]++;
      }
      else if(match == 5 && bonus == 1) // 5숫자와 보너스 숫자가 일치할 경우 2등
      {
       grade[1]++;
      }
      else if(match == 5 && bonus == 0) // 5숫자가 일치하고 보너스 숫자가 불일치 3등
      {
       grade[2]++;
      }
      else if(match == 4) // 4숫자 일치 4등
      {
       grade[3]++;
      }
      else if(match == 3) // 3숫자 일치 5등
      {
       grade[4]++;
      }
      else
       grade[5]++; 
     }
     
     for(i = 0; i < 5; i++)
      printf("%d등 : %d\n", i+1, grade[i]);
      printf("떨거지 : %d\n", grade[5]);
     
      for(i = 0; i < 6; i++)
      printf("%2d ", success_num[i]);
     
     printf("\n\n%d장 샀을 때 금액 비교 ------------------\n", MAXROLL);
     printf("총사용액 : %d (%d만원)\n", 1000 * MAXROLL, MAXROLL/10);
     printf("총당첨금 : %d\n", grade[4] * 5000 + grade[3] * 50000 + grade[2] * 1000000 + grade[1] * 50000000 + grade[0] * 3000000000);
     printf("이익 : %d\n", (grade[4] * 5000 + grade[3] * 50000 + grade[2] * 1000000 + grade[1] * 50000000 + grade[0] * 3000000000) - (1000 * MAXROLL));
    
    //일단 5등 5000, 4등 50000, 3등 백만원, 2등 오천만원, 1등 30억 으로 계산.
     return 0;
    }
    
    void make_num(int* array, int count)
    {
     int i,j,num = 0;
     
     for(i = 0; i < count; i++)
     {
      num = rand() % 45 + 1;
      array[i] = num;
      
      for(j = 0; j < i; j++)
      {
       if(array[j] == array[i])
       {
        i--;
        break;
       }
      } 
     }
    }

    예전에 만들어 놨던 거라 그냥 일단 올려놈


    반응형

    '컴퓨터기초 > #1 알고리즘 100선' 카테고리의 다른 글

    6. 아스키코드 표  (0) 2017.02.21
    4. 글자 거꾸로 출력  (0) 2017.02.21
    3. 피보나치 수열  (0) 2017.02.18
    2. 소수 구하기  (0) 2017.02.18
    1. 진수 변환  (0) 2017.01.08

    댓글

Designed by Tistory. Flag Counter