Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- /*
- Elizabeth Smith
- Name Length? -Yes - No more than 100
- - Type? - Yes - Only letters
- -Range? - No
- -Format? - No
- Age - Length? - No
- - Type? - Yes - Int
- -Range? - Yes - 1 to 126
- -Format? - No
- Phone number - Length? - Yes - Depending on format, needs 10 or 11 digits
- - Type? - No
- -Range? - No
- -Format? - Yes - Mix of digits and certain characters
- */
- bool checkName(char name[], int length);
- bool checkNum(char num[], int length);
- bool checkAge(int age);
- int findLen(char n[]);
- int main()
- {
- //Variables
- char name[100] = "abc";
- char phoneNumber[15] = "1 208 885 0000";
- int age = 0;
- bool nameCheck = true;
- bool numCheck = true;
- bool ageCheck = true;
- //Get Name
- cout << "Enter Your Name: ";
- fgets(name, sizeof(name), stdin);
- int lengthN = findLen(name);
- //If name is too long, ignores first 100 characters.
- //If not too long, adds replaces newline with NULL
- if (lengthN > 0 && name[lengthN - 1] == '\n') {
- name[lengthN - 1] = '\0';
- --lengthN;
- }
- else {
- cin.ignore(100, '\n');
- }
- nameCheck = checkName(name, lengthN);
- while (nameCheck == false) {
- cout << "Invalid Input. Try Again: ";
- fgets(name, sizeof(name), stdin);
- lengthN = findLen(name);
- if (lengthN > 0 && name[lengthN - 1] == '\n') {
- name[lengthN - 1] = '\0';
- --lengthN;
- }
- else {
- cin.ignore(100, '\n');
- }
- nameCheck = checkName(name, lengthN);
- }
- //GET AGE
- cout << "Enter Age: ";
- cin >> age;
- ageCheck = checkAge(age);
- while (ageCheck == false)
- {
- cout << "Re-Enter a valid Age: ";
- cin >> age;
- ageCheck = checkAge(age);
- }
- cin.ignore();
- //GET NUMBER
- cout << "Enter Phone Number: ";
- fgets(phoneNumber, sizeof(phoneNumber), stdin);
- lengthN = findLen(phoneNumber);
- //If number is too long, ignores.
- //If not too long, adds replaces newline with NULL
- if (lengthN > 0 && name[lengthN - 1] == '\n') {
- name[lengthN - 1] = '\0';
- --lengthN;
- }
- else {
- cin.ignore();
- }
- numCheck = checkNum(phoneNumber, lengthN);
- while (numCheck == false) {
- cout << "Invalid Input. Try Again : ";
- fgets(phoneNumber, sizeof(phoneNumber), stdin);
- lengthN = findLen(phoneNumber);
- if (lengthN > 0 && name[lengthN - 1] == '\n') {
- name[lengthN - 1] = '\0';
- --lengthN;
- }
- else {
- cin.ignore();
- }
- numCheck = checkNum(phoneNumber, lengthN);
- }
- cout << "\nINFORMATION COLLECTED:\n";
- cout << "Name: " << name << endl;
- cout << "Age: " << age << endl;
- cout << "Phone Number: " << phoneNumber << endl;
- return 0;
- }
- //Returns false if not letters else true
- bool checkName(char name[], int length)
- {
- for (int i = 0; i < length; i++) {
- if (!isalpha(name[i])) {
- cout << "Use Letters Only: \n";
- return false;
- }
- }
- return true;
- }
- //Returns true if formats match else false or false if digit count is not correct
- bool checkNum(char num[], int length)
- {
- int digitCount = 0;
- for (int i = 0; i < length; i++) {
- if (isdigit(num[i]) || num[i] == ' ' || num[i] == '-' || num[i] == '(' || num[i]
- == ')' || num[0] == '+' || num[i] == '\n' || num[i] == '\0') {
- if (isdigit(num[i]))
- {
- digitCount++;
- }
- }
- else
- {
- cout << "Invalid Character: \n";
- return false;
- }
- }
- //+12088850000
- if (num[0] == '+' && digitCount == 11) {
- return true;
- }
- //1 208 885 0000
- if (isspace(num[1]) && isspace(num[5]) && isspace(num[9]) &&
- (digitCount == 11 || digitCount == 10)) {
- return true;
- }
- //208-885-0000
- if (num[3] == '-' && num[7] == '-' && (digitCount == 11 || digitCount ==
- 10))
- {
- return true;
- }
- //(208)8850000
- if (num[0] == '(' && num[4] == ')' && (digitCount == 11 || digitCount ==
- 10))
- {
- return true;
- }
- if (digitCount == 10 || digitCount == 11) {
- return true;
- }
- if (digitCount != 10 && digitCount != 11) {
- cout << "Invalid Number of Digits\n";
- return false;
- }
- return false;
- }
- //Returns false if range fails or not number else true
- bool checkAge(int age)
- {
- if (age > 126 || age < 0)
- {
- cout << "Invalid Age Range.\n";
- return false;
- }
- //If the input is not a number
- if (cin.fail())
- {
- cin.clear(); // Clear the error flag
- //cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Discard invalid input
- cout << "Invalid input. Please enter a number for age.\n";
- return false;
- }
- return true;
- }
- int findLen(char n[]) {
- int count = 0;
- for (int i = 0; n[i] != '\0'; i++) {
- ++count;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement