//Dione Torrevillas CS1A Chapter 8, P. 487, #3
/**********************************************************
* Class: CS1A
* Chapter 8 Homework - Programming Challenge #3
* Title: Lottery Winners Modification
*
* Description:
* This program uses binary search to check whether one of
* the player's ticket numbers matches the winning number.
*
* INPUT:
* This week's winning five-digit lottery number.
*
* OUTPUT:
* A message saying whether a ticket is a winner.
**********************************************************/
#include <iostream>
using namespace std;
int main()
{
const int SIZE = 10;
// Binary search requires the array to be in ascending order.
const int tickets[SIZE] = {
13579, 26791, 26792, 33445, 55555,
62483, 77777, 79422, 85647, 93121
};
int winningNumber; //INPUT - Winning lottery number
int first = 0;
int last = SIZE - 1;
bool winner = false;
cout << "Enter this week's winning five-digit number: ";
cin >> winningNumber;
// Repeatedly check the middle of the remaining search range.
while (first <= last && !winner)
{
int middle = (first + last) / 2;
if (tickets[middle] == winningNumber)
winner = true;
else if (tickets[middle] > winningNumber)
last = middle - 1; // Search the lower half.
else
first = middle + 1; // Search the upper half.
}
//OUTPUT - Display whether a ticket matched.
if (winner)
cout << "Congratulations! You have a winning ticket." << endl;
else
cout << "None of your tickets won this week." << endl;
return 0;
}
Ci8vRGlvbmUgVG9ycmV2aWxsYXMgICAgICAgICAgICAgICAgIENTMUEgICAgICAgICAgICAgICAgIENoYXB0ZXIgOCwgUC4gNDg3LCAjMwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ2xhc3M6IENTMUEKICogQ2hhcHRlciA4IEhvbWV3b3JrIC0gUHJvZ3JhbW1pbmcgQ2hhbGxlbmdlICMzCiAqIFRpdGxlOiBMb3R0ZXJ5IFdpbm5lcnMgTW9kaWZpY2F0aW9uCiAqCiAqIERlc2NyaXB0aW9uOgogKiBUaGlzIHByb2dyYW0gdXNlcyBiaW5hcnkgc2VhcmNoIHRvIGNoZWNrIHdoZXRoZXIgb25lIG9mCiAqIHRoZSBwbGF5ZXIncyB0aWNrZXQgbnVtYmVycyBtYXRjaGVzIHRoZSB3aW5uaW5nIG51bWJlci4KICoKICogSU5QVVQ6CiAqIFRoaXMgd2VlaydzIHdpbm5pbmcgZml2ZS1kaWdpdCBsb3R0ZXJ5IG51bWJlci4KICoKICogT1VUUFVUOgogKiBBIG1lc3NhZ2Ugc2F5aW5nIHdoZXRoZXIgYSB0aWNrZXQgaXMgYSB3aW5uZXIuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICBjb25zdCBpbnQgU0laRSA9IDEwOwoKICAgIC8vIEJpbmFyeSBzZWFyY2ggcmVxdWlyZXMgdGhlIGFycmF5IHRvIGJlIGluIGFzY2VuZGluZyBvcmRlci4KICAgIGNvbnN0IGludCB0aWNrZXRzW1NJWkVdID0gewogICAgICAgIDEzNTc5LCAyNjc5MSwgMjY3OTIsIDMzNDQ1LCA1NTU1NSwKICAgICAgICA2MjQ4MywgNzc3NzcsIDc5NDIyLCA4NTY0NywgOTMxMjEKICAgIH07CgogICAgaW50IHdpbm5pbmdOdW1iZXI7ICAvL0lOUFVUIC0gV2lubmluZyBsb3R0ZXJ5IG51bWJlcgogICAgaW50IGZpcnN0ID0gMDsKICAgIGludCBsYXN0ID0gU0laRSAtIDE7CiAgICBib29sIHdpbm5lciA9IGZhbHNlOwoKICAgIGNvdXQgPDwgIkVudGVyIHRoaXMgd2VlaydzIHdpbm5pbmcgZml2ZS1kaWdpdCBudW1iZXI6ICI7CiAgICBjaW4gPj4gd2lubmluZ051bWJlcjsKCiAgICAvLyBSZXBlYXRlZGx5IGNoZWNrIHRoZSBtaWRkbGUgb2YgdGhlIHJlbWFpbmluZyBzZWFyY2ggcmFuZ2UuCiAgICB3aGlsZSAoZmlyc3QgPD0gbGFzdCAmJiAhd2lubmVyKQogICAgewogICAgICAgIGludCBtaWRkbGUgPSAoZmlyc3QgKyBsYXN0KSAvIDI7CgogICAgICAgIGlmICh0aWNrZXRzW21pZGRsZV0gPT0gd2lubmluZ051bWJlcikKICAgICAgICAgICAgd2lubmVyID0gdHJ1ZTsKICAgICAgICBlbHNlIGlmICh0aWNrZXRzW21pZGRsZV0gPiB3aW5uaW5nTnVtYmVyKQogICAgICAgICAgICBsYXN0ID0gbWlkZGxlIC0gMTsgIC8vIFNlYXJjaCB0aGUgbG93ZXIgaGFsZi4KICAgICAgICBlbHNlCiAgICAgICAgICAgIGZpcnN0ID0gbWlkZGxlICsgMTsgLy8gU2VhcmNoIHRoZSB1cHBlciBoYWxmLgogICAgfQoKICAgIC8vT1VUUFVUIC0gRGlzcGxheSB3aGV0aGVyIGEgdGlja2V0IG1hdGNoZWQuCiAgICBpZiAod2lubmVyKQogICAgICAgIGNvdXQgPDwgIkNvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUgYSB3aW5uaW5nIHRpY2tldC4iIDw8IGVuZGw7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiTm9uZSBvZiB5b3VyIHRpY2tldHMgd29uIHRoaXMgd2Vlay4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K