using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Random dice = new Random();
int dice_check = 0; //랜덤 주사위 값
int overlap_check = 0; //주사위 값이 뽑은 번호랑 중복이 아닐시 증가연산
int[] lottery_numbers = new int[7]; //뽑은 번호
bool finish = false;
while (!finish)
{
Console.Write("\n추첨하시려면 엔터를 누르세요: ");
Console.ReadLine();
dice_check = dice.Next(1, 10 + 1); //랜덤값 생성
for (int j = 0; j < lottery_numbers.Length; j++)
{
if (lottery_numbers[j] != dice_check) //중복안되면 증가연산
{
overlap_check++;
}
}
if (overlap_check == 7) //중복된 숫자가 하나도 없을시 if문 실행
{
for (int i = 0; i < lottery_numbers.Length; i++)
{
if (i == lottery_numbers.Length - 1) // i == 6
{
lottery_numbers[i] = dice_check;
Console.WriteLine("보너스번호: {0}번\n", lottery_numbers[i]);
finish = true; //while문이 실행 안되게 값을 바꿔줌
break; //for문 종료, while문이 막혀서 프로그램 종료
}
if (lottery_numbers[i] == 0)
{
lottery_numbers[i] = dice_check;
Console.WriteLine("당첨번호: {0}번", lottery_numbers[i]);
overlap_check = 0; //중복체크 값 초기화
break; //for문 종료후 while문에서 다시 시작
}
}
}
else
{
Console.WriteLine("중복");
overlap_check = 0;
}
}
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Random dice = new Random();
int lottery_max_count = 7;
int[] lottery_numbers = new int[lottery_max_count];
bool overlap;
for (int i = 0; i < lottery_max_count; i++)
{
while (true)
{
Console.Write("\n추첨하시려면 엔터를 누르세요: ");
Console.ReadLine();
lottery_numbers[i] = dice.Next(1, 12 + 1);
overlap = false;
for (int j = 0; j < i; j++)
{
if (lottery_numbers[i] == lottery_numbers[j])
{
Console.WriteLine("중복된 번호입니다. 다시 뽑아주세요");
overlap = true;
break;
}
}
if(!overlap)
{
break;
}
} //while문 끝
if (i == lottery_max_count - 1)
{
Console.WriteLine("보너스번호: {0}번", lottery_numbers[i]);
break;
}
Console.WriteLine("당첨번호: {0}번", lottery_numbers[i]);
} //i for문 끝
}
}
}

길고 가독성 떨어지는 코드를 수정하기 위해 검색 활용
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Random random = new Random();
ArrayList list = new ArrayList();
int lottery_number;
for (int i = 0; i < 12; i++)
{
list.Add(i + 1);
}
for (int i = 0; i < 7; i++)
{
Console.Write("\n추첨하시려면 엔터를 누르세요");
Console.ReadLine();
lottery_number = random.Next(0, list.Count);
if(i==6)
{
Console.WriteLine("보너스번호 : {0} ", list[lottery_number]);
list.RemoveAt(lottery_number);
break;
}
Console.WriteLine("당첨번호 : {0}", list[lottery_number]);
list.RemoveAt(lottery_number);
}
}
}
}

'C# > 수업 내용' 카테고리의 다른 글
| [C#] 2021-08-23 오전 (0) | 2021.08.23 |
|---|---|
| [C#] switch case문 (0) | 2021.08.23 |
| [C#] 2021-08-20 오후 for문 연습 문제 11~17, challenge (0) | 2021.08.20 |
| [C#] 2021-08-20 오후 for문 연습 문제 1~10 (0) | 2021.08.20 |
| [C#] for, foreach (0) | 2021.08.20 |