//Diego Martinez CSC5 Chapter 8, P.487, #3
/*******************************************************************************
* DISPLAY LOTTERY WINNERS (BINARY SEARCH)
* ______________________________________________________________________________
* This program allows the user to enter this week's 5-digit lottery
* number and checks whether it matches any of the 10 winning lottery ticket
* numbers. It then displays a message whether or not the user has a winning
* number.
*
* Computation is based on the Formula:
* tickets[i] = winningNumber
*______________________________________________________________________________
* INPUT
* 5-digit lottery number entered by the user
*
* OUTPUT
* A message stating whether one of the lottery tickets is a WINNER or not
*******************************************************************************/
#include <iostream>
using namespace std;
int main()
{
// sorted Array of lottery numbers
int tickets[10] = {
13579, 26791, 26792, 33445, 55555,
62483, 77777, 79422, 85647, 93121
};
int winningNumber;
bool winner = false;
int first = 0;
int last = 9;
int middle;
// Ask user for winning number
cout << "Enter this week's winning 5-digit number: ";
cin >> winningNumber;
// Binary search
while (first <= last)
{
middle = (first + last) / 2;
if (tickets[middle] == winningNumber)
{
winner = true;
break;
}
else if (tickets[middle] > winningNumber)
{
last = middle - 1;
}
else
{
first = middle + 1;
}
}
// Display Result
if (winner)
{
cout << "Congratulations! One of your tickets is a WINNER!" << endl;
}
else
{
cout << "Sorry, none of your tickets matched this week's winning number." << endl;
}
return 0;
}
Ly9EaWVnbyBNYXJ0aW5legkJCQkJQ1NDNQkJCQkgICAgQ2hhcHRlciA4LCBQLjQ4NywgIzMKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgRElTUExBWSBMT1RURVJZIFdJTk5FUlMgKEJJTkFSWSBTRUFSQ0gpCiogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiogVGhpcyBwcm9ncmFtIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciB0aGlzIHdlZWsncyA1LWRpZ2l0IGxvdHRlcnkgCiogbnVtYmVyIGFuZCBjaGVja3Mgd2hldGhlciBpdCBtYXRjaGVzIGFueSBvZiB0aGUgMTAgd2lubmluZyBsb3R0ZXJ5IHRpY2tldCAKKiBudW1iZXJzLiBJdCB0aGVuIGRpc3BsYXlzIGEgbWVzc2FnZSB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBoYXMgYSB3aW5uaW5nIAoqIG51bWJlci4KKiAKKiBDb21wdXRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgRm9ybXVsYToKKgl0aWNrZXRzW2ldID0gd2lubmluZ051bWJlcgoqX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiogSU5QVVQKKgk1LWRpZ2l0IGxvdHRlcnkgbnVtYmVyIGVudGVyZWQgYnkgdGhlIHVzZXIKKiAKKiBPVVRQVVQKKglBIG1lc3NhZ2Ugc3RhdGluZyB3aGV0aGVyIG9uZSBvZiB0aGUgbG90dGVyeSB0aWNrZXRzIGlzIGEgV0lOTkVSIG9yIG5vdAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKCQoJLy8gc29ydGVkIEFycmF5IG9mIGxvdHRlcnkgbnVtYmVycwoJaW50IHRpY2tldHNbMTBdID0gewoJCTEzNTc5LCAyNjc5MSwgMjY3OTIsIDMzNDQ1LCA1NTU1NSwKCQk2MjQ4MywgNzc3NzcsIDc5NDIyLCA4NTY0NywgOTMxMjEKCX07CglpbnQgd2lubmluZ051bWJlcjsKCWJvb2wgd2lubmVyID0gZmFsc2U7CglpbnQgZmlyc3QgPSAwOwoJaW50IGxhc3QgPSA5OwoJaW50IG1pZGRsZTsKCQoJLy8gQXNrIHVzZXIgZm9yIHdpbm5pbmcgbnVtYmVyCgljb3V0IDw8ICJFbnRlciB0aGlzIHdlZWsncyB3aW5uaW5nIDUtZGlnaXQgbnVtYmVyOiAiOwoJY2luID4+IHdpbm5pbmdOdW1iZXI7CgkKCS8vIEJpbmFyeSBzZWFyY2gKCXdoaWxlIChmaXJzdCA8PSBsYXN0KQoJewoJCW1pZGRsZSA9IChmaXJzdCArIGxhc3QpIC8gMjsKCQlpZiAodGlja2V0c1ttaWRkbGVdID09IHdpbm5pbmdOdW1iZXIpCgkJewoJCQl3aW5uZXIgPSB0cnVlOwoJCQlicmVhazsKCQl9CgkJZWxzZSBpZiAodGlja2V0c1ttaWRkbGVdID4gd2lubmluZ051bWJlcikKCQl7CgkJCWxhc3QgPSBtaWRkbGUgLSAxOwoJCX0KCQllbHNlIAoJCXsKCQkJZmlyc3QgPSBtaWRkbGUgKyAxOwoJCX0KCX0KCS8vIERpc3BsYXkgUmVzdWx0CglpZiAod2lubmVyKQoJewoJCWNvdXQgPDwgIkNvbmdyYXR1bGF0aW9ucyEgT25lIG9mIHlvdXIgdGlja2V0cyBpcyBhIFdJTk5FUiEiIDw8IGVuZGw7Cgl9CgllbHNlIAoJewoJCWNvdXQgPDwgIlNvcnJ5LCBub25lIG9mIHlvdXIgdGlja2V0cyBtYXRjaGVkIHRoaXMgd2VlaydzIHdpbm5pbmcgbnVtYmVyLiIgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9