c++초보입니다. 컴퓨터가 랜덤 선택해서 이 랜덤숫자가 중복이 안되게 하는 소스를 모르겠습니다. 3일 동안 해봤는데 저에겐 한계네요... 딱 이프문 포문 배열 배웠습니다. 이중배열x... 도와주십쇼!! 파일첨부했습니다. zip |
<!-- //con_substance --> <!-- con_banner -->
#include <iostream>
#include <Windows.h>
#include <time.h>
using namespace std;
void main(void)
{
srand(time(NULL));
int coNum[25];
int co1[25];
int myNum[25];
int dest, sour, temp;
int count = 0;
int garo = 0;
int sero = 0;
int input;
int turn = 0;
int coInput;
for (int i = 0; i < 25; i++)
{
myNum[i] = i + 1;
coNum[i] = i + 1;
}
for (int i = 0; i<1000; i++)
{
dest = rand() % 25;
sour = rand() % 25;
temp = myNum[dest];
myNum[dest] = myNum[sour];
myNum[sour] = temp;
}
for (int i = 0; i<600; i++)
{
dest = rand() % 25;
sour = rand() % 25;
temp = comNum[dest];
coNum[dest] = coNum[sour];
coNum[sour] = temp;
}
while (true)
{
count = 0;
cout << "My BingGo" << endl;
cout << endl;
for (int garo = 0; garo < 5; garo++)
{
for (int sero = 0; sero < 5; sero++)
{
if (myNum[garo * 5 + sero] == input) // 맞추면 별
{
myNum[garo * 5 + sero] = 120;
}
if (myNum[garo * 5 + sero] == 120) // 별은 별
{
cout << "x ";
}
else // 숫자 보이는 상태
{
cout << myNum[garo * 5 + sero] << ' ';
}
}
cout << endl;
}
cout << endl;
cout << endl;
cout << endl;
cout << "Co BingGo" << endl;
cout << endl;
for (int garo = 0; garo < 5; garo++)
{
for (int sero = 0; sero < 5; sero++)
{
if (coNum[garo * 5 + sero] == input) // 맞추면 별
{
co1[garo * 5 + sero] = 120;
}
if (co1[garo * 5 + sero] == 120) //
{
cout << coNum[garo * 5 + sero] << " ";
}
else
{
cout << "* ";
}
}
cout << endl;
}
cout << endl;
if (myNum[0] == 'x' && myNum[1] == 'x' && myNum[2] == 'x' && myNum[3] == 'x' && myNum[4] == 'x') count++; // 가로
if (myNum[5] == 'x' && myNum[6] == 'x' && myNum[7] == 'x' && myNum[8] == 'x' && myNum[9] == 'x') count++;
if (myNum[10] == 'x' && myNum[11] == 'x' && myNum[12] == 'x' && myNum[13] == 'x' && myNum[14] == 'x') count++;
if (myNum[15] == 'x' && myNum[16] == 'x' && myNum[17] == 'x' && myNum[18] == 'x' && myNum[19] == 'x') count++;
if (myNum[20] == 'x' && myNum[21] == 'x' && myNum[22] == 'x' && myNum[23] == 'x' && myNum[24] == 'x') count++;
if (myNum[0] == 'x' && myNum[5] == 'x' && myNum[10] == 'x' && myNum[15] == 'x' && myNum[20] == 'x') count++; // 세로
if (myNum[1] == 'x' && myNum[6] == 'x' && myNum[11] == 'x' && myNum[16] == 'x' && myNum[21] == 'x') count++;
if (myNum[2] == 'x' && myNum[7] == 'x' && myNum[12] == 'x' && myNum[17] == 'x' && myNum[22] == 'x') count++;
if (myNum[3] == 'x' && myNum[8] == 'x' && myNum[13] == 'x' && myNum[18] == 'x' && myNum[23] == 'x') count++;
if (myNum[4] == 'x' && myNum[9] == 'x' && myNum[14] == 'x' && myNum[19] == 'x' && myNum[24] == 'x') count++;
if (myNum[0] == 'x' && myNum[6] == 'x' && myNum[12] == 'x' && myNum[18] == 'x' && myNum[24] == 'x') count++; // 대각선
if (myNum[4] == 'x' && myNum[8] == 'x' && myNum[12] == 'x' && myNum[16] == 'x' && myNum[20] == 'x') count++;
cout << "내 빙고 수는? " << count << endl;
cout << endl;
cout << "숫자를 입력하세요? ";
cin >> input;
Sleep(1000);
coInput = rand() % 25+1; // 컴퓨터 랜덤입력!!
cout << "컴퓨터 숫자는? " << coInput << endl;
for (int i = 0; i < 25; i++) // 내가 입력해서 x
{
for (int garo = 0; garo < 5; garo++)
{
for (int sero = 0; sero < 5; sero++)
{
if (coInput == myNum[garo * 5 + sero])
{
myNum[garo * 5 + sero] = 'x';
}
}
}
for (int garo = 0; garo < 5; garo++) // 컴터가 숫자 입력
{
for (int sero = 0; sero < 5; sero++)
{
if (coNum[garo * 5 + sero] == coInput)
{
co1[garo * 5 + sero] = 120;
}
}
}
}
Sleep(2000);
system("cls");
}
}
갯수가 몇개 안되니까 지금까지 뽑은 숫자들이랑 개수를 저장해놓고 랜덤으로 하나 뽑은게 중복되면 다시 뽑는 방법으로 하면 될듯
shuffling을 해도 되긴 하지만 그렇게까지 할 필욘 없을거 같아서..
어렵네유.ㅜㅠ