Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tuple <string, int, bool> add_new_digit(string s, string ip, int i, int num_count, bool ip_is_valid) {
- if (isdigit(s[i])) {
- ip.push_back(s[i]);
- num_count++;
- }
- if (!isdigit(s[i]) && s[i] != '.') {
- ip_is_valid = false;
- }
- return make_tuple(ip, num_count, ip_is_valid);
- }
- 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) {
- if (s[i] == '.' || i == s.length() - 1) {
- if (s[i] == '.') {
- dots_count++;
- }
- if (num_count == 0 || num_count > 3) {
- ip_is_valid = false;
- }
- else {
- int number = stoi(ip);
- if (number > 255) {
- ip_is_valid = false;
- }
- }
- num_count = 0;
- ip.clear();
- }
- return make_tuple(ip, num_count, dots_count, ip_is_valid);
- }
- int task7 () {
- string s;
- getline(cin, s);
- string ip, valid_ip = "YES";
- bool ip_is_valid = true;
- int num_count = 0, dots_count = 0;
- if (s.length() < 7) {
- ip_is_valid = false;
- }
- for (int i = 0; i < s.length(); i++) {
- tie(ip, num_count, ip_is_valid) = add_new_digit(s, ip, i, num_count, ip_is_valid);
- if (!ip_is_valid) {
- break;
- }
- tie(ip, num_count, dots_count, ip_is_valid) = check_number_is_valid(s, ip, i, num_count, dots_count, ip_is_valid);
- if (!ip_is_valid) {
- break;
- }
- }
- if (dots_count != 3) {
- ip_is_valid = false;
- }
- if (!ip_is_valid) {
- valid_ip = "NO";
- }
- cout << valid_ip;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement