Advertisement
TwITe

Untitled

Aug 13th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. tuple <string, int, bool> add_new_digit(string s, string ip, int i, int num_count, bool ip_is_valid) {
  2.     if (isdigit(s[i])) {
  3.         ip.push_back(s[i]);
  4.         num_count++;
  5.     }
  6.     if (!isdigit(s[i]) && s[i] != '.') {
  7.         ip_is_valid = false;
  8.     }
  9.     return make_tuple(ip, num_count, ip_is_valid);
  10. }
  11.  
  12. tuple <string, int, int, bool> check_number_is_valid(string s, string ip, int i, int num_count, int dots_count, bool ip_is_valid) {
  13.     if (s[i] == '.' || i == s.length() - 1) {
  14.         if (s[i] == '.') {
  15.             dots_count++;
  16.         }
  17.         if (num_count == 0 || num_count > 3) {
  18.             ip_is_valid = false;
  19.         }
  20.         else {
  21.             int number = stoi(ip);
  22.             if (number > 255) {
  23.                 ip_is_valid = false;
  24.             }
  25.         }
  26.         num_count = 0;
  27.         ip.clear();
  28.     }
  29.     return make_tuple(ip, num_count, dots_count, ip_is_valid);
  30. }
  31.  
  32. int task7 () {
  33.     string s;  
  34.     getline(cin, s);
  35.     string ip, valid_ip = "YES";
  36.     bool ip_is_valid = true;
  37.     int num_count = 0, dots_count = 0;
  38.     if (s.length() < 7) {
  39.         ip_is_valid = false;
  40.     }
  41.     for (int i = 0; i < s.length(); i++) {
  42.         tie(ip, num_count, ip_is_valid) = add_new_digit(s, ip, i, num_count, ip_is_valid);
  43.         if (!ip_is_valid) {
  44.             break;
  45.         }
  46.         tie(ip, num_count, dots_count, ip_is_valid) = check_number_is_valid(s, ip, i, num_count, dots_count, ip_is_valid);
  47.         if (!ip_is_valid) {
  48.             break;
  49.         }
  50.     }
  51.     if (dots_count != 3) {
  52.         ip_is_valid = false;
  53.     }
  54.     if (!ip_is_valid) {
  55.         valid_ip = "NO";
  56.     }
  57.     cout << valid_ip;
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement