//Nathan Dominguez CSC5 Chapter 8, P.487, #1
//
/*******************************************************************************
*
* Validate an Account Charge with a Linear Search
*_______________________________________________________________________________
* This program prompts the user to enter a charge account number, the program
* then uses a linear seach method to determine if the entered number is a valid
* account charge number.
*_______________________________________________________________________________
* INPUT
* number : the input number
* acc_num[] : the array holds 18 charge account numbers
* OUTPUT
*
* result : the variable stores the values 0-17 and -1 from the
* LinearSearch function.
* LinearSearch : it is a function that returns 0-17 or -1. If this function
* returns 0-17 then the user's input is a winning ticket, if
* it returns -1 then the user's input is not a winning ticket.
* index : stores the index number of the acc_num[] array in the
* LinearSearch() function.
* position : the variable returns the position of the user's number. If
* position = -1 then the user's number was not found
*
*******************************************************************************/
#include <iostream>
using namespace std;
//LinearSearch() prototype
int LinearSearch(int array[], int size, int number);
int main()
{
//CONSTANT - array with 18 valid account charge numbers
int acc_num[] = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850,
8080152, 4562555, 5552012, 5050552, 7825877, 1250255,
1005231, 6545231, 3852085, 7576651, 7881200, 4581002};
int number;
//
//user input variable
cout << "Enter your charge account number: ";
cin >> number;
//
//Input Validation
while (number < 0 || number > 9999999)
{
cout << number << endl;
cout << "Not a valid entry, please enter a positive 7-digit number: ";
cin >> number;
}
cout << number << endl;
//setting a variable to hold the LinearSearch output
int result = LinearSearch(acc_num, 18, number);
//VALIDATE
if (result >= 0)
{
cout << number << " is a valid number." << endl;
}
else
{
cout << number << " is not a valid number." << endl;
}
return 0;
}
//
//LinearSearch function definition
int LinearSearch(int array[], int size, int number)
{
int index = 0;
int position = -1;
bool found = false;
//
//LOOP - find user input
while (index < size && !found)
{
if (array[index] == number)
{
found = true;
position = index;
}
index++;
}
return position;
}
Ly9OYXRoYW4gRG9taW5ndWV6ICAgICAgICAgICAgICAgICAgICAJQ1NDNSAgICAgICAgICAgICAgICBDaGFwdGVyIDgsIFAuNDg3LCAjMQovLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCiogVmFsaWRhdGUgYW4gQWNjb3VudCBDaGFyZ2Ugd2l0aCBhIExpbmVhciBTZWFyY2gKKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKiBUaGlzIHByb2dyYW0gcHJvbXB0cyB0aGUgdXNlciB0byBlbnRlciBhIGNoYXJnZSBhY2NvdW50IG51bWJlciwgdGhlIHByb2dyYW0KKiB0aGVuIHVzZXMgYSBsaW5lYXIgc2VhY2ggbWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgZW50ZXJlZCBudW1iZXIgaXMgYSB2YWxpZCAKKiBhY2NvdW50IGNoYXJnZSBudW1iZXIuCipfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiogSU5QVVQKKgludW1iZXIgICAgICAgIDogdGhlIGlucHV0IG51bWJlcgoqICAgYWNjX251bVtdICAgICA6CXRoZSBhcnJheSBob2xkcyAxOCBjaGFyZ2UgYWNjb3VudCBudW1iZXJzCiogT1VUUFVUCioJCioJcmVzdWx0ICAgICAgICA6IHRoZSB2YXJpYWJsZSBzdG9yZXMgdGhlIHZhbHVlcyAwLTE3IGFuZCAtMSBmcm9tIHRoZSAKKiAgICAgICAgICAgICAgICAgICBMaW5lYXJTZWFyY2ggZnVuY3Rpb24uCioJTGluZWFyU2VhcmNoICA6IGl0IGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIDAtMTcgb3IgLTEuIElmIHRoaXMgZnVuY3Rpb24KKgkJCQkgICAgcmV0dXJucyAwLTE3IHRoZW4gdGhlIHVzZXIncyBpbnB1dCBpcyBhIHdpbm5pbmcgdGlja2V0LCBpZiAKKiAgICAgICAgICAgICAgICAgICBpdCByZXR1cm5zIC0xIHRoZW4gdGhlIHVzZXIncyBpbnB1dCBpcyBub3QgYSB3aW5uaW5nIHRpY2tldC4KKglpbmRleCAgICAgICAgIDoJc3RvcmVzIHRoZSBpbmRleCBudW1iZXIgb2YgdGhlIGFjY19udW1bXSBhcnJheSBpbiB0aGUgCiogICAgICAgICAgICAgICAgICAgTGluZWFyU2VhcmNoKCkgZnVuY3Rpb24uCioJcG9zaXRpb24gICAgICA6CXRoZSB2YXJpYWJsZSByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdXNlcidzIG51bWJlci4gSWYgCioJCQkJICAgIHBvc2l0aW9uID0gLTEgdGhlbiB0aGUgdXNlcidzIG51bWJlciB3YXMgbm90IGZvdW5kCiogCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAovL0xpbmVhclNlYXJjaCgpIHByb3RvdHlwZQppbnQgTGluZWFyU2VhcmNoKGludCBhcnJheVtdLCBpbnQgc2l6ZSwgaW50IG51bWJlcik7IAogCmludCBtYWluKCkgCnsKCS8vQ09OU1RBTlQgLSBhcnJheSB3aXRoIDE4IHZhbGlkIGFjY291bnQgY2hhcmdlIG51bWJlcnMKCWludCBhY2NfbnVtW10gPSB7NTY1ODg0NSwgNDUyMDEyNSwgNzg5NTEyMiwgODc3NzU0MSwgODQ1MTI3NywgMTMwMjg1MCwgCgkJCQkJODA4MDE1MiwgNDU2MjU1NSwgNTU1MjAxMiwgNTA1MDU1MiwgNzgyNTg3NywgMTI1MDI1NSwKCQkJCQkxMDA1MjMxLCA2NTQ1MjMxLCAzODUyMDg1LCA3NTc2NjUxLCA3ODgxMjAwLCA0NTgxMDAyfTsKCQoJaW50IG51bWJlcjsKCS8vCiAgICAvL3VzZXIgaW5wdXQgdmFyaWFibGUKCWNvdXQgPDwgIkVudGVyIHlvdXIgY2hhcmdlIGFjY291bnQgbnVtYmVyOiAiOwoJY2luID4+IG51bWJlcjsKICAgIC8vCgkvL0lucHV0IFZhbGlkYXRpb24KCXdoaWxlIChudW1iZXIgPCAwIHx8IG51bWJlciA+IDk5OTk5OTkpCgl7CgkJY291dCA8PCBudW1iZXIgPDwgZW5kbDsKCQljb3V0IDw8ICJOb3QgYSB2YWxpZCBlbnRyeSwgcGxlYXNlIGVudGVyIGEgcG9zaXRpdmUgNy1kaWdpdCBudW1iZXI6ICI7CgkJY2luID4+IG51bWJlcjsKCX0KCWNvdXQgPDwgbnVtYmVyIDw8IGVuZGw7CiAKCS8vc2V0dGluZyBhIHZhcmlhYmxlIHRvIGhvbGQgdGhlIExpbmVhclNlYXJjaCBvdXRwdXQKCWludCByZXN1bHQgPSBMaW5lYXJTZWFyY2goYWNjX251bSwgMTgsIG51bWJlcik7CiAKCS8vVkFMSURBVEUKCWlmIChyZXN1bHQgPj0gMCkKCXsKCQljb3V0IDw8IG51bWJlciA8PCAiIGlzIGEgdmFsaWQgbnVtYmVyLiIgPDwgZW5kbDsKCX0KCWVsc2UKCXsKCQljb3V0IDw8IG51bWJlciA8PCAiIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQovLwovL0xpbmVhclNlYXJjaCBmdW5jdGlvbiBkZWZpbml0aW9uCmludCBMaW5lYXJTZWFyY2goaW50IGFycmF5W10sIGludCBzaXplLCBpbnQgbnVtYmVyKQp7CglpbnQgaW5kZXggPSAwOwoJaW50IHBvc2l0aW9uID0gLTE7Cglib29sIGZvdW5kID0gZmFsc2U7CgkvLwoJLy9MT09QIC0gZmluZCB1c2VyIGlucHV0Cgl3aGlsZSAoaW5kZXggPCBzaXplICYmICFmb3VuZCkKCXsKCQlpZiAoYXJyYXlbaW5kZXhdID09IG51bWJlcikKCQl7CgkJCWZvdW5kID0gdHJ1ZTsKCQkJcG9zaXRpb24gPSBpbmRleDsKCQl9CgkJaW5kZXgrKzsKCX0KCXJldHVybiBwb3NpdGlvbjsKfQ==