로또내꺼라는 안드로이드용 앱을 개발하면서 작성한 소스코드입니다. 혹시 필요로 하신 분들이 있으시다면 조금이나마 도움이 되었으면 좋겠네요. 예를 들어서 프로그램상에서 로또 번호를 난수로 생성하고 나면 대충


12, 44, 2, 35 ,33, 40


이런식으로 나온다고 가정했을때 이걸 그냥 사용하기에는 보기에 좋지 않으니 실제 로또처럼 보기 쉽게 올림차순 정렬해주는 코드입니다.^^


2, 12, 33, 35, 40, 44 이런식으로 말이죠 ㅎㅎ


소스코드는 간단해요^^


std::vector<int> _LottoNumber;


간단히 설명 드리자면 getLottoNumber()라는 함수를 실행하면 로또숫자가 생성되고 올림차순 정렬될꺼랍니다. (정렬방식은 재귀함수를 이용한 quick sort를 사용하였어요)


//-----------------------------------------------------------------------------

// getLottoNumber

//-----------------------------------------------------------------------------

void LottoPaperLayer::getLottoNumber()

{

  std::vector<int> LottoPool;

  for(int Number = 1; Number  < 46; Number ++)

   LottoPool.pushback(Number );  


for (int i = 0; i < 6; i++)

{

int idx= rand() % LottoPool.size();

int number = LottoPool.at(idx);

LottoPool.erase(LottoPool.begin() + idx);

_LottoNumber.push_back(number);

}


if (_LottoNumber.size() > 1)

{

int end = (int)_LottoNumber.size() - 1;

quicksort_recursive(_LottoNumber, 0, end);

}

}


//-----------------------------------------------------------------------------

// quicksort_recursive

//-----------------------------------------------------------------------------

void LottoPaperLayer::quicksort_recursive(std::vector<int>& v, int left, int right)

{

if (right == left) return;


int i = left, j = right;

int pivot = v[(left + right) / 2];

while (i < j) {

while ((v[i] < pivot) && (i < j))

i++;

while ((v[j] > pivot) && (i < j))

j--;

if (i <= j) 

std::swap(v[i++], v[j--]);

}


// recursive call

if (left < j)

quicksort_recursive(v, left, j);

if (i < right)

quicksort_recursive(v, i, right);

}



아래는 실제 앱에서 나오는 결과입니다.


 


그럼 즐거운 개발되세용^^

아래는 제가 직접 개발해본 로또내꺼 앱 이랍니다. 그냥 심심풀이로 즐길 수 있게 만들어봤어요


로또내꺼 앱 보러가기 (google play store)





로또리치 둘러보기



(이 포스팅은 제휴마케팅이 포함된 광고로 일정커피션을 지급받을 수 있습니다)