Advertisement
Aw3som3n3sss

Untitled

May 10th, 2024 (edited)
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.42 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. /*
  4. Elizabeth Smith
  5. Name Length? -Yes - No more than 100
  6. - Type? - Yes - Only letters
  7. -Range? - No
  8. -Format? - No
  9. Age - Length? - No
  10. - Type? - Yes - Int
  11. -Range? - Yes - 1 to 126
  12. -Format? - No
  13. Phone number - Length? - Yes - Depending on format, needs 10 or 11 digits
  14. - Type? - No
  15. -Range? - No
  16. -Format? - Yes - Mix of digits and certain characters
  17. */
  18. bool checkName(char name[], int length);
  19. bool checkNum(char num[], int length);
  20. bool checkAge(int age);
  21. int findLen(char n[]);
  22. int main()
  23. {
  24.     //Variables
  25.     char name[100] = "abc";
  26.     char phoneNumber[15] = "1 208 885 0000";
  27.     int age = 0;
  28.     bool nameCheck = true;
  29.     bool numCheck = true;
  30.     bool ageCheck = true;
  31.     //Get Name
  32.     cout << "Enter Your Name: ";
  33.     fgets(name, sizeof(name), stdin);
  34.     int lengthN = findLen(name);
  35.     //If name is too long, ignores first 100 characters.
  36.     //If not too long, adds replaces newline with NULL
  37.     if (lengthN > 0 && name[lengthN - 1] == '\n') {
  38.         name[lengthN - 1] = '\0';
  39.         --lengthN;
  40.     }
  41.     else {
  42.         cin.ignore(100, '\n');
  43.     }
  44.     nameCheck = checkName(name, lengthN);
  45.     while (nameCheck == false) {
  46.         cout << "Invalid Input. Try Again: ";
  47.         fgets(name, sizeof(name), stdin);
  48.         lengthN = findLen(name);
  49.         if (lengthN > 0 && name[lengthN - 1] == '\n') {
  50.             name[lengthN - 1] = '\0';
  51.             --lengthN;
  52.         }
  53.         else {
  54.             cin.ignore(100, '\n');
  55.         }
  56.         nameCheck = checkName(name, lengthN);
  57.     }
  58.  
  59.     //GET AGE
  60.     cout << "Enter Age: ";
  61.     cin >> age;
  62.     ageCheck = checkAge(age);
  63.     while (ageCheck == false)
  64.     {
  65.         cout << "Re-Enter a valid Age: ";
  66.         cin >> age;
  67.         ageCheck = checkAge(age);
  68.     }
  69.     cin.ignore();
  70.     //GET NUMBER
  71.     cout << "Enter Phone Number: ";
  72.     fgets(phoneNumber, sizeof(phoneNumber), stdin);
  73.     lengthN = findLen(phoneNumber);
  74.  
  75.     //If number is too long, ignores.
  76.     //If not too long, adds replaces newline with NULL
  77.     if (lengthN > 0 && name[lengthN - 1] == '\n') {
  78.         name[lengthN - 1] = '\0';
  79.         --lengthN;
  80.     }
  81.     else {
  82.         cin.ignore();
  83.     }
  84.     numCheck = checkNum(phoneNumber, lengthN);
  85.     while (numCheck == false) {
  86.         cout << "Invalid Input. Try Again : ";
  87.         fgets(phoneNumber, sizeof(phoneNumber), stdin);
  88.         lengthN = findLen(phoneNumber);
  89.  
  90.         if (lengthN > 0 && name[lengthN - 1] == '\n') {
  91.             name[lengthN - 1] = '\0';
  92.             --lengthN;
  93.         }
  94.         else {
  95.             cin.ignore();
  96.         }
  97.         numCheck = checkNum(phoneNumber, lengthN);
  98.     }
  99.  
  100.     cout << "\nINFORMATION COLLECTED:\n";
  101.     cout << "Name: " << name << endl;
  102.     cout << "Age: " << age << endl;
  103.     cout << "Phone Number: " << phoneNumber << endl;
  104.     return 0;
  105. }
  106. //Returns false if not letters else true
  107. bool checkName(char name[], int length)
  108. {
  109.     for (int i = 0; i < length; i++) {
  110.         if (!isalpha(name[i])) {
  111.             cout << "Use Letters Only: \n";
  112.             return false;
  113.         }
  114.     }
  115.     return true;
  116. }
  117. //Returns true if formats match else false or false if digit count is not correct
  118. bool checkNum(char num[], int length)
  119. {
  120.  
  121.     int digitCount = 0;
  122.     for (int i = 0; i < length; i++) {
  123.  
  124.  
  125.         if (isdigit(num[i]) || num[i] == ' ' || num[i] == '-' || num[i] == '(' || num[i]
  126.             == ')' || num[0] == '+' || num[i] == '\n' || num[i] == '\0') {
  127.             if (isdigit(num[i]))
  128.             {
  129.                 digitCount++;
  130.             }
  131.         }
  132.         else
  133.         {
  134.             cout << "Invalid Character: \n";
  135.             return false;
  136.         }
  137.  
  138.     }
  139.     //+12088850000
  140.     if (num[0] == '+' && digitCount == 11) {
  141.  
  142.         return true;
  143.     }
  144.     //1 208 885 0000
  145.     if (isspace(num[1]) && isspace(num[5]) && isspace(num[9]) &&
  146.         (digitCount == 11 || digitCount == 10)) {
  147.         return true;
  148.     }
  149.     //208-885-0000
  150.     if (num[3] == '-' && num[7] == '-' && (digitCount == 11 || digitCount ==
  151.         10))
  152.     {
  153.         return true;
  154.     }
  155.     //(208)8850000
  156.     if (num[0] == '(' && num[4] == ')' && (digitCount == 11 || digitCount ==
  157.         10))
  158.     {
  159.         return true;
  160.     }
  161.     if (digitCount == 10 || digitCount == 11) {
  162.         return true;
  163.     }
  164.     if (digitCount != 10 && digitCount != 11) {
  165.         cout << "Invalid Number of Digits\n";
  166.         return false;
  167.     }
  168.     return false;
  169. }
  170. //Returns false if range fails or not number else true
  171. bool checkAge(int age)
  172. {
  173.     if (age > 126 || age < 0)
  174.     {
  175.         cout << "Invalid Age Range.\n";
  176.         return false;
  177.     }
  178.     //If the input is not a number
  179.     if (cin.fail())
  180.     {
  181.         cin.clear(); // Clear the error flag
  182.         //cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Discard invalid input
  183.         cout << "Invalid input. Please enter a number for age.\n";
  184.         return false;
  185.     }
  186.     return true;
  187. }
  188. int findLen(char n[]) {
  189.     int count = 0;
  190.     for (int i = 0; n[i] != '\0'; i++) {
  191.         ++count;
  192.     }
  193.     return count;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement