Проверка правильносьти IP адреса на C++

539
11 февраля 2018, 00:34

Дан IP адрес. Необходимо проверить его правильность (все числа в диапазоне 0-255, числа разделены точками, количество чисел: 4, точек: 3). Помогите исправить ввод адреса (В строке циклом находятся цифры и записываются в 1 переменную. При окончании строки точка записывается в массив separators, а число - в nums) и проверку (функция is_valid). Ввод без строки реализовать не получилось.

#include <iostream>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
//#include <fstream>
using namespace std;
class IPAddress{
    int nums[3];
    char separators[3];
public:
    void input();
    bool is_valid();
};
void IPAddress::input(){
    char c[101]={};
    char sym='0';
    int j=0, num=0, ia;
    cin.getline(c,101);
    for(int i=0; i<4; i++){
        //ia=sym-'0';
        while(true!=false){
            sym=c[j];
            ia=sym-'0';
            if(isdigit(sym)!=0){
                num*=10;
                num+=ia;
            }
            else{
                break;
            }
            j++;
        }
        if(c[j]=='.') separators[i]='.';
        j++;
        num=0;
    }
}
bool IPAddress::is_valid(){
    bool err=true;
    for(int i=0; i<4; i++){
        if(nums[i]>255||nums[i]<0) err=false;
        if(i!=3){
            if(separators[i]!='.') err=false;
        }
    }
    return err;
}
int main() {
    IPAddress ip;
    ip.input();
    if(ip.is_valid()==true) cout << 1;
    else cout << 0;
    return 0;
}
READ ALSO
Как взять строку с браузера в программу?

Как взять строку с браузера в программу?

ЗдравствуйтеВ программирование я совсем новичок (совсем зеленый, так сказать :D) Ну и вообщем,появилась у меня идея,сделать что то типа конвертера...

185
Чтение/запись BSON документа в файл

Чтение/запись BSON документа в файл

Не понимаю как записать и считать BSON документ из файлаИспользуется официальная библиотека bsoncxx от MongoDB

235
Как сделать такую клавиатуру?

Как сделать такую клавиатуру?

Где можно найти исходники этой клавиатурыНе могу найти ни как

253
Как избежать показа DialogFragment дважды

Как избежать показа DialogFragment дважды

Пример кода отображения DialogFragment(просто показывает прогресс бар)

196