Re: Тема для розмов
sensei написав:
adziri написав:У кого слабкі нерви не дивитися.
▼Прихований текст#include <algorithm> #include <cctype> #include <iostream> #include <sstream> #include <string> /////////////////////////////////////////////////////////////////////////////// typedef std::string T_str; /////////////////////////////////////////////////////////////////////////////// bool is_correct_num_in_segm ( T_str const & s, int min, int max ) { bool bool_res{}; try { auto num = std::stoi(s); bool_res = num >= min && num <= max; } catch(...) { bool_res = false; } return bool_res; } /////////////////////////////////////////////////////////////////////////////// bool ip_adr_is_correct( T_str const & s ) { const char POINT_SYMB {'.'}; const int NUMBERS_TOTAL {4}; bool bool_res = s.back() != POINT_SYMB && std::find_if ( s.begin (), s.end (), [POINT_SYMB] ( auto symb ) { return !std::isdigit( symb ) && symb != POINT_SYMB; } ) == s.end(); if( bool_res ) { std::istringstream ssin(s); int counter{}; T_str num_str; while ( getline( ssin, num_str, POINT_SYMB ) ) { ++counter; bool_res = counter == NUMBERS_TOTAL ? is_correct_num_in_segm ( num_str, 1, 255 ) : is_correct_num_in_segm ( num_str, 0, 255 ); if( !bool_res ) { break; } }//while bool_res = bool_res && counter == NUMBERS_TOTAL; }//if return bool_res; } /////////////////////////////////////////////////////////////////////////////// int main() { for(;;) { T_str s; std::cout << "IP adress: "; std::cin >> s; std::cout << "IP adress " << s << ( ip_adr_is_correct(s) ? " is correct" : " is incorrect" ) << std::endl << std::endl << std::endl; }//for }
Схоже на результат роботи форматувальника, типу clang-format
Ну, якщо його так налаштувати, то він теж так зможе