프로그램/C# - Study / / 2010. 9. 10. 22:21

Report01 - 로또생성기 확인버젼

반응형

아래 확인버젼을 돌리시면 프로그램 돌아가는 내부 과정을 볼 수 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Report01_Array_lotto2
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random(); //난수발생기 선언
            int sum;  // 합계 
            int[] ar = new int[6]; // 로또 번호를 저장한 6개의 배열 생성
            bool arrays = false;   //do ~ while 판별을 위한 bool 초기값 false 로 셋팅
           
while (true)
            {
                do
                {

                    arrays = true; // true 로 셋팅 true 가 계속 유지되면 do - while문 종료 즉 중복값이 없다는 뜻
                    sum = 0; // 합계 0 으로 셋팅

                    // 로또 뽑기 메소드(배열 입력)
                    sum = ArrayIn(r, sum, ar);

                    // 중복 검사 메소드
                    arrays = OverlapCheck(ar, arrays);

                    if (arrays == false)
                        Console.WriteLine("펄스값 - Do while 다시 시작 ");

                    if (arrays == true)
                        Console.WriteLine("트루값 - Do while 끝");

                    if (sum / 6 < 20 || sum / 6 > 25) // 로또 번호의 합의 평균은 20 ~ 25 사이 값이어야 하기때문에 if의 조건문 사용
                    {
                        arrays = false;
                        Console.WriteLine("평균값이 아니다!! Do while 다시 시작 ");
                        Console.WriteLine("{0}의값은 평균값이 아니다!! Do while 다시 시작 ", sum / 6);
                    }

                } while (arrays == false);

                Print_lotto(sum, ar);// 출력메소드

                Console.Write("--------------------------------\n");
                Console.Write("중단하려면 y를 입력하세요 : ");
                string yn = Console.ReadLine();
                if (yn.Equals("y"))     // y 일경우 프로그램 종료
                    break;
            }
        }

        private static int ArrayIn(Random r, int sum, int[] ar)
        {
            for (int i = 0; i < 6; i++)
            {
                ar[i] = r.Next(1, 50); // 1 ~ 49 사이의 난수

                sum = ar[i] + sum; // 로또 번호의 합
            }
            return sum;
        }

        private static bool OverlapCheck(int[] ar, bool arrays)
        {
            for (int i = 0; i < 5; i++)
            {
                for (int j = i + 1; j < 6; j++)
                {
                    if (ar[i] == ar[j]) // 배열에 저장된 로또 번호를 비교
                    {
                        arrays = false;
                        Console.WriteLine("배열비교{0},{1} 의 값 {2}, {3}, 같은 값이네! 딱걸렸슴!", i, j, ar[i], ar[j]);
                    }
                    else
                    {
                        Console.WriteLine("배열비교{0},{1} 의 값 {2}, {3}, 틀린값! 빙고!", i, j, ar[i], ar[j]);
                    }

                }
            }
            return arrays;
        }

        private static void Print_lotto(int sum, int[] ar) // 로또번호 출력
        {
            for (int j = 0; j < 6; j++)
            {
                Console.WriteLine("로또번호 [{0}] 번째 값은 = {1}", j, ar[j]);
            }

            Console.WriteLine("평균은 {0}", sum / 6);
        }

    }
}

반응형

'프로그램 > C# - Study' 카테고리의 다른 글

객체지향은?  (0) 2010.09.13
6D - 배열 , 다차원 배열, Langth(), Sort(), Reverse(), IndexOf() 기능  (0) 2010.09.13
Report01 - 로또생성기  (0) 2010.09.10
5D - 배열  (0) 2010.09.10
5D - 메소드, 오버로딩  (0) 2010.09.10
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유