#include #include using namespace std; char storedCodes[1201]; //global variable int counter=0; int menu(); void option1(); void option2(); void option3(); int main() { int option=0; while(option!=4) { option=menu(); if(option==1) option1(); else if(option==2) option2(); else if(option==3) option3(); else if(option==4) break; else { cout << "Your entry was invalid. Please enter your option.\n"; option=0; } } return 0; } int menu() { int option=0; cout << "1) Enter a new code \n"; cout << "2) Print entire list of codes\n"; cout << "3) Display last code and delete it from the list.\n"; cout << "4) Exit.\n"; cout << "Enter a choice(1-4): "; cin >> option; return option; } void option1() //reads in codes and checks them for problems { char flag4='N', flag5='N', flag89='N', seg1digit='N', seg1char='N', seg2digit='N', seg2char='N', seg3digit='N', seg3char='N', validlength='N', validchars='N'; char code[1024]=""; cout << "Please enter your 12 digit code: \n"; cin >> code; if(strlen(code)==12) //checks that code is length 12 { validlength='Y'; } for(int i=0; i<12; i++) //i apologize for the sloppy code, but couldn't think //of a better way to check valid characters { if (code[i]=='A' || code[i]=='L' || code[i]=='P' || code[i]=='R' || code[i]!= 'T' || code[i]=='V' || code[i]=='W' || code[i]=='X' || isdigit(code[i])==1) { validchars='Y'; } if (code[i]=='4') //sets flag if digit 4 is found flag4='Y'; if (code[i]=='5') //sets flag if digit 5 is found flag5='Y'; if (code[i]=='8' || code[i]=='9') //sets flag if digit 8 or 9 is found flag89='Y'; } for(int i=0; i<4; i++) { if (isdigit(code[i])==1) //checks that segment 1 has a digit seg1digit='Y'; if (isdigit(code[i])!=1) //checks that segment 1 has a char seg1char='Y'; //already would have thrown out invalid char } for(int i=4; i<8; i++) { if (isdigit(code[i])==1) //checks that segment 2 has a digit seg2digit='Y'; if (isdigit(code[i])!=1) //checks that segment 2 has a char seg2char='Y'; } for(int i=8; i<12; i++) { if (isdigit(code[i])==1) //checks that segment 3 has a digit seg3digit='Y'; if (isdigit(code[i])!=1) //checks that segment 3 has a char seg3char='Y'; } if(flag4!='Y') { cout << "Your code must contain the digit 4 at least once.\n"; } if(flag5!='Y') { cout << "Your code must contain the digit 5 at least once.\n"; } if(flag89!='Y') { cout << "Your code must contain either the digit 8 or 9.\n"; } if(seg1digit!='Y' || seg1char!='Y' || seg2digit!='Y' || seg2char!='Y' || seg3digit!='Y' || seg3char!='Y') { cout << "Each 4 character segment must contain at least one letter and one digit.\n"; } if(validlength!='Y') cout << "The code you entered is not 12 characters long.\n"; if(validchars!='Y') cout << "The code you entered does not contain all valid characters (A, L, P, R, T, V, W, X, 0-9.)\n"; if(seg1digit=='Y' && seg1char=='Y' && seg2digit=='Y' && seg2char=='Y' && seg3digit=='Y' && seg3char=='Y' && validchars=='Y' && validlength=='Y' && flag4=='Y' && flag5=='Y' && flag89=='Y') { for(int i=0;i<12;i++) { storedCodes[(counter*12)+i]=code[i]; } counter++; } } void option2() //prints array of valid codes { for(int i=0; i<(counter*12);i++) { cout << storedCodes[i]; if((i+1)%12==0 && i!=0) cout << "\n"; //does linebreak every 12 chars } } void option3() { for(int i=((counter-1)*12); i<((counter)*12);i++) { cout << storedCodes[i]; if((i+1)%12==0&&i!=0) cout << "\n"; } counter--; }