//Jonathan Estrada CSC5 Chapter 8, P.487, #3
/*******************************************************************************
* DETERMINE LOTTARY TICKET
* _____________________________________________________________________________
* This program will receive a lottary ticket combination from the user and tell
* them if they won or not.
* _____________________________________________________________________________
* INPUT
* lottoNumbers n : all possible winning numbers
* SIZE : array size
* userLottoTicket : user lottary ticket number
* OUTPUT
* result : the return value of if it was found
* *****************************************************************************/
#include <iostream>
using namespace std;
int lottoMatchSearch( const int[], int, int);
const int SIZE = 10;
int main() {
int lottoNumbers[SIZE] = {13579, 26791, 26792, 33445, 55555, 62483, 77777,
79422, 85647, 93121 };
int userLottoTicket;
int result;
cout << "Please enter lotto ticket digits: ";
cin >> userLottoTicket;
cout << userLottoTicket << endl;
result = lottoMatchSearch(lottoNumbers, SIZE, userLottoTicket);
if(result == -1)
cout << "You are not a winner." << endl;
else
cout << "Winning ticket. ";
return 0;
}
/*******************************************************************************
* Definiton of funcion lottoMatchSearch.
* This function will conduct a linear search using the arrays combindations
* and see in the user got a match.
* *****************************************************************************/
int lottoMatchSearch(const int lottoNumbers[], int SIZE, int userLottoTicket)
{
int first = 0;
int last = SIZE - 1;
int middle;
int positon = - 1;
bool found = false;
while(!found && first <= last)
{
middle = (first + last)/2;
if(lottoNumbers[middle] == userLottoTicket)
{
found = true;
positon = middle;
}
else if (lottoNumbers[middle]>userLottoTicket)
last = middle - 1;
else
first = middle + 1;
}
return positon;
}
Ly9Kb25hdGhhbiBFc3RyYWRhICAgICAgICAgICAgICAgICAgQ1NDNSAgICAgICAgICAgICAgICAgICAgQ2hhcHRlciA4LCBQLjQ4NywgIzMKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogREVURVJNSU5FIExPVFRBUlkgVElDS0VUCiAqIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAqIFRoaXMgcHJvZ3JhbSB3aWxsIHJlY2VpdmUgYSBsb3R0YXJ5IHRpY2tldCBjb21iaW5hdGlvbiBmcm9tIHRoZSB1c2VyIGFuZCB0ZWxsCiAqIHRoZW0gaWYgdGhleSB3b24gb3Igbm90LgogKiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogKiBJTlBVVAogKiAgIGxvdHRvTnVtYmVycyBuICAgOiAgYWxsIHBvc3NpYmxlIHdpbm5pbmcgbnVtYmVycyAKICogICBTSVpFICAgICAgICAgICAgIDogIGFycmF5IHNpemUKICogICB1c2VyTG90dG9UaWNrZXQgIDogIHVzZXIgbG90dGFyeSB0aWNrZXQgbnVtYmVyCiAqIE9VVFBVVAogKiAgIHJlc3VsdCAgICAgICAgICAgOiB0aGUgcmV0dXJuIHZhbHVlIG9mIGlmIGl0IHdhcyBmb3VuZAogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGxvdHRvTWF0Y2hTZWFyY2goIGNvbnN0IGludFtdLCBpbnQsIGludCk7CmNvbnN0IGludCBTSVpFID0gMTA7CgppbnQgbWFpbigpIHsKCQoJaW50IGxvdHRvTnVtYmVyc1tTSVpFXSA9ICB7MTM1NzksIDI2NzkxLCAyNjc5MiwgMzM0NDUsIDU1NTU1LCA2MjQ4MywgNzc3NzcsCgk3OTQyMiwgODU2NDcsIDkzMTIxCX07CgkKCWludCB1c2VyTG90dG9UaWNrZXQ7CglpbnQgcmVzdWx0OwoJCgljb3V0IDw8ICJQbGVhc2UgZW50ZXIgbG90dG8gdGlja2V0IGRpZ2l0czogIjsKCWNpbiA+PiB1c2VyTG90dG9UaWNrZXQ7Cgljb3V0IDw8IHVzZXJMb3R0b1RpY2tldCA8PCBlbmRsOwoJCglyZXN1bHQgPSBsb3R0b01hdGNoU2VhcmNoKGxvdHRvTnVtYmVycywgU0laRSwgdXNlckxvdHRvVGlja2V0KTsKCQoJaWYocmVzdWx0ID09IC0xKQoJCWNvdXQgPDwgIllvdSBhcmUgbm90IGEgd2lubmVyLiIgPDwgZW5kbDsKCWVsc2UKCQljb3V0IDw8ICJXaW5uaW5nIHRpY2tldC4gIjsKCQoJcmV0dXJuIDA7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRGVmaW5pdG9uIG9mIGZ1bmNpb24gbG90dG9NYXRjaFNlYXJjaC4KICogVGhpcyBmdW5jdGlvbiB3aWxsIGNvbmR1Y3QgYSBsaW5lYXIgc2VhcmNoIHVzaW5nIHRoZSBhcnJheXMgY29tYmluZGF0aW9ucyAKICogYW5kIHNlZSBpbiB0aGUgdXNlciBnb3QgYSBtYXRjaC4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludCBsb3R0b01hdGNoU2VhcmNoKGNvbnN0IGludCBsb3R0b051bWJlcnNbXSwgaW50IFNJWkUsIGludCB1c2VyTG90dG9UaWNrZXQpCnsKCWludCBmaXJzdCA9IDA7CglpbnQgbGFzdCA9IFNJWkUgLSAxOwoJaW50IG1pZGRsZTsKCWludCBwb3NpdG9uID0gLSAxOwoJYm9vbCBmb3VuZCA9IGZhbHNlOwoJCgl3aGlsZSghZm91bmQgJiYgZmlyc3QgPD0gbGFzdCkKCXsKCQltaWRkbGUgPSAoZmlyc3QgKyBsYXN0KS8yOwoJCWlmKGxvdHRvTnVtYmVyc1ttaWRkbGVdID09IHVzZXJMb3R0b1RpY2tldCkKCQl7CgkJCWZvdW5kID0gdHJ1ZTsKCQkJcG9zaXRvbiA9IG1pZGRsZTsKCQl9CgkJZWxzZSBpZiAobG90dG9OdW1iZXJzW21pZGRsZV0+dXNlckxvdHRvVGlja2V0KQoJICAgIAlsYXN0ID0gbWlkZGxlIC0gMTsKCQllbHNlIAoJCWZpcnN0ID0gbWlkZGxlICsgMTsKCX0KCXJldHVybiBwb3NpdG9uOwp9