//Andrew Alspaugh CS1A Chapter 8. P. 487
/****************************************************************************
Validate Charge Accout Input
_____________________________________________________________________________
The purpose of this program is to validate an inputted account number
This program has an initiallized array with 18 values, the program uses a bubble
sort and then a binary search to check if the inputted charge number is valid
____________________________________________________________________________
//INPUTS
const int SIZE = 18;
int chargeNumber[SIZE] = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 8080152, 456255, 5552012, 505552, 7825877, 1250255, 1005231, 6545231, 3852085, 7576651, 7881200, 4581002};
//Charge Account
int userInput;
//Bubble Sort
bool swap;
int temp;
//Binary Search
int first = 0;
int last = SIZE - 1;
int middle;
int position = -1;
bool found = false;
//OUTPUTS
bool valid = false;
*******************************************************************************/
#include <iostream>
using namespace std;
int main()
{
//DATA DICTIONARY
//INPUTS
const int SIZE = 18;
int chargeNumber[SIZE] = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 8080152, 456255, 5552012, 505552, 7825877, 1250255, 1005231, 6545231, 3852085, 7576651, 7881200, 4581002};
//Charge Account
int userInput;
//Bubble Sort
bool swap;
int temp;
//Binary Search
int first = 0;
int last = SIZE - 1;
int middle;
int position = -1;
bool found = false;
//OUTPUTS
bool valid = false;
//INPUT
cout << "Enter Charge Number" << endl;
cin >> userInput;
//PROCESS
//SORT ARRAY
do
{
swap = false;
for (int count = 0; count < (SIZE -1) ; count ++)
{
if (chargeNumber[count] > chargeNumber[count + 1])
{
temp = chargeNumber[count];
chargeNumber[count] = chargeNumber[count + 1];
chargeNumber[count + 1] = temp;
swap = true;
}
}
} while (swap);
//BINARY SEARCH
while(!found && first <= last)
{
middle = (first + last) / 2;
if (chargeNumber[middle] == userInput)
{
found = true;
position = middle;
}
else if (chargeNumber[middle] > userInput)
last = middle - 1;
else
first = middle + 1;
}
//OUTPUT
if (found == true)
{
cout << "Charge Number Was Found In Position //AFTER SORT//: " << position << endl;
cout << "Number is Valid" << endl;
cout << chargeNumber[position];
}
if (found == false)
{
cout << "Charge Number Not Found" << endl;
cout << "Number is Invalid" << endl;
}
return 0;
}
Ly9BbmRyZXcgQWxzcGF1Z2ggICAgICAgICAgICAgICAgICAgIENTMUEgICAgICAgICAgICAgICAgQ2hhcHRlciA4LiBQLiA0ODcKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKVmFsaWRhdGUgQ2hhcmdlIEFjY291dCBJbnB1dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpUaGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMgdG8gdmFsaWRhdGUgYW4gaW5wdXR0ZWQgYWNjb3VudCBudW1iZXIKClRoaXMgcHJvZ3JhbSBoYXMgYW4gaW5pdGlhbGxpemVkIGFycmF5IHdpdGggMTggdmFsdWVzLCB0aGUgcHJvZ3JhbSB1c2VzIGEgYnViYmxlCnNvcnQgYW5kIHRoZW4gYSBiaW5hcnkgc2VhcmNoIHRvIGNoZWNrIGlmIHRoZSBpbnB1dHRlZCBjaGFyZ2UgbnVtYmVyIGlzIHZhbGlkCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KLy9JTlBVVFMKCWNvbnN0IGludCBTSVpFID0gMTg7CglpbnQgY2hhcmdlTnVtYmVyW1NJWkVdID0gezU2NTg4NDUsIDQ1MjAxMjUsIDc4OTUxMjIsIDg3Nzc1NDEsIDg0NTEyNzcsIDEzMDI4NTAsIDgwODAxNTIsIDQ1NjI1NSwgNTU1MjAxMiwgNTA1NTUyLCA3ODI1ODc3LCAxMjUwMjU1LCAxMDA1MjMxLCA2NTQ1MjMxLCAzODUyMDg1LCA3NTc2NjUxLCA3ODgxMjAwLCA0NTgxMDAyfTsKCQoJLy9DaGFyZ2UgQWNjb3VudAoJaW50IHVzZXJJbnB1dDsKCQoJLy9CdWJibGUgU29ydAoJYm9vbCBzd2FwOwoJaW50IHRlbXA7CgkKCS8vQmluYXJ5IFNlYXJjaAoJaW50IGZpcnN0ID0gMDsKCWludCBsYXN0ID0gU0laRSAtIDE7CglpbnQgbWlkZGxlOwoJaW50IHBvc2l0aW9uID0gLTE7Cglib29sIGZvdW5kID0gZmFsc2U7CgkKLy9PVVRQVVRTCglib29sIHZhbGlkID0gZmFsc2U7CioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgCnsKLy9EQVRBIERJQ1RJT05BUlkKCS8vSU5QVVRTCgljb25zdCBpbnQgU0laRSA9IDE4OwoJaW50IGNoYXJnZU51bWJlcltTSVpFXSA9IHs1NjU4ODQ1LCA0NTIwMTI1LCA3ODk1MTIyLCA4Nzc3NTQxLCA4NDUxMjc3LCAxMzAyODUwLCA4MDgwMTUyLCA0NTYyNTUsIDU1NTIwMTIsIDUwNTU1MiwgNzgyNTg3NywgMTI1MDI1NSwgMTAwNTIzMSwgNjU0NTIzMSwgMzg1MjA4NSwgNzU3NjY1MSwgNzg4MTIwMCwgNDU4MTAwMn07CgkKCS8vQ2hhcmdlIEFjY291bnQKCWludCB1c2VySW5wdXQ7CgkKCS8vQnViYmxlIFNvcnQKCWJvb2wgc3dhcDsKCWludCB0ZW1wOwoJCgkvL0JpbmFyeSBTZWFyY2gKCWludCBmaXJzdCA9IDA7CglpbnQgbGFzdCA9IFNJWkUgLSAxOwoJaW50IG1pZGRsZTsKCWludCBwb3NpdGlvbiA9IC0xOwoJYm9vbCBmb3VuZCA9IGZhbHNlOwoJCgkvL09VVFBVVFMKCWJvb2wgdmFsaWQgPSBmYWxzZTsKIAovL0lOUFVUCgljb3V0IDw8ICJFbnRlciBDaGFyZ2UgTnVtYmVyIiA8PCBlbmRsOwoJY2luID4+IHVzZXJJbnB1dDsKCQovL1BST0NFU1MKCS8vU09SVCBBUlJBWQoJZG8KCXsKCQlzd2FwID0gZmFsc2U7CgkJZm9yIChpbnQgY291bnQgPSAwOyBjb3VudCA8IChTSVpFIC0xKSA7IGNvdW50ICsrKQoJCXsKCQkJaWYgKGNoYXJnZU51bWJlcltjb3VudF0gPiBjaGFyZ2VOdW1iZXJbY291bnQgKyAxXSkKCQkJewoJCQkJdGVtcCA9IGNoYXJnZU51bWJlcltjb3VudF07CgkJCQljaGFyZ2VOdW1iZXJbY291bnRdID0gY2hhcmdlTnVtYmVyW2NvdW50ICsgMV07CgkJCQljaGFyZ2VOdW1iZXJbY291bnQgKyAxXSA9IHRlbXA7CgkJCQlzd2FwID0gdHJ1ZTsKCQkJfQoJCX0KCX0gd2hpbGUgKHN3YXApOwoJLy9CSU5BUlkgU0VBUkNICgkKCXdoaWxlKCFmb3VuZCAmJiBmaXJzdCA8PSBsYXN0KQoJewoJCW1pZGRsZSA9IChmaXJzdCArIGxhc3QpIC8gMjsKCQlpZiAoY2hhcmdlTnVtYmVyW21pZGRsZV0gPT0gdXNlcklucHV0KQoJCXsKCQkJZm91bmQgPSB0cnVlOwoJCQlwb3NpdGlvbiA9IG1pZGRsZTsKCQl9CgkJZWxzZSBpZiAoY2hhcmdlTnVtYmVyW21pZGRsZV0gPiB1c2VySW5wdXQpCgkJCWxhc3QgPSBtaWRkbGUgLSAxOwoJCWVsc2UKCQkJZmlyc3QgPSBtaWRkbGUgKyAxOwoJfQoJCi8vT1VUUFVUCglpZiAoZm91bmQgPT0gdHJ1ZSkKCXsKCQljb3V0IDw8ICJDaGFyZ2UgTnVtYmVyIFdhcyBGb3VuZCBJbiBQb3NpdGlvbiAvL0FGVEVSIFNPUlQvLzogICIgPDwgcG9zaXRpb24gPDwgZW5kbDsKCQljb3V0IDw8ICJOdW1iZXIgaXMgVmFsaWQiIDw8IGVuZGw7CgkJY291dCA8PCBjaGFyZ2VOdW1iZXJbcG9zaXRpb25dOwoJfQoJCglpZiAoZm91bmQgPT0gZmFsc2UpCgl7CgkJY291dCA8PCAiQ2hhcmdlIE51bWJlciBOb3QgRm91bmQiIDw8IGVuZGw7CgkJY291dCA8PCAiTnVtYmVyIGlzIEludmFsaWQiIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==