Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/163: Рейтинг темы: голосов - 163, средняя оценка - 4.68
9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89

Является ли заданная строка правильным IP-адресом

06.04.2016, 17:11. Показов 34553. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде четырех чисел, каждое из которых может принимать значения от 0 до 255, разделенных точками. Вот примеры правильных IP-адресов:

127.0.0.0
192.168.0.1
255.0.255.255

Напишите программу, которая определяет, является ли заданная строка правильным IP-адресом.

Входные данные
Программа получает на вход строку из произвольных символов.

Выходные данные
Если эта строка является корректной записью IP-адреса, выведите YES, иначе выведите NO.

Примечание
Для перевода из строки в число удобно пользоваться функцией stoi, которая принимает на вход строку, а возвращает число.

Sample Input:
127.0.0.1
Sample Output:
YES
Решение нужно с функцией stoi()

В этом коде ошибка, Failed test #6. Wrong answer. (там пять чисел, разделенных точечками)
Поправьте, хотя бы этот, кто умеет.

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main()
{
   int a, b, c, d;
   char p1, p2, p3;
   std::cin >> a >> p1 >> b >> p2 >> c >> p3 >> d;
   (a>=0 && a<=255 && b>=0 && b<=255 && c>=0 && c<=255 && d>=0 && d<=255 && 
      p1 == '.' && p2 == '.' && p3 == '.') ?
   std::cout << "YES" : std::cout << "NO";
   return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.04.2016, 17:11
Ответы с готовыми решениями:

Программа, которая определяет, является ли заданная строка правильным IP-адресом
Здравствуйте! Вот задание В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде...

Напишите программу, которая определяет, является ли заданная строка правильным IP-адресом
Для того чтобы выходить в Интернет, каждому компьютеру присваивается так называемый IP-адрес. Он состоит из четырех целых чисел в диапазоне...

Определите является ли заданная строка правильным скобочным выражением
Пожалуйста готовый код Дана последовательность скобок вида «(», «)», «», «{», «}». Правильными скобочными последовательностями...

14
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.04.2016, 17:49
Является ли данная строка действительным IP-адресом
0
9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89
06.04.2016, 18:47  [ТС]
zss, Отлично.
Решение правильное (для опытных сишников)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <regex>
using namespace std; 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::regex reg("^((25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[0-9]{1,2})\\.){3}(25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[0-9]{1,2})$");
    if (regex_match(str, reg))
    cout << "YES";
    else cout << "NO";
}
Все-таки кто-нибудь умеет по простому закодить с функцией stoi, как требуется для новичков, изучены только string, getline, s.find. Как-то так
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
06.04.2016, 19:31
Цитата Сообщение от AGPro Посмотреть сообщение
для опытных сишников
где в этом коде хотя бы 1 строчка С?
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 4
07.04.2016, 11:46
А можно ли как-то проверять условие окончания строки?
Что введенный после d символ — это Enter?
Либо что вообще никаких символов не вводится?

Добавлено через 27 минут
Я бессовестно подгоняла под тест и ввела новую проверку, что следующий символ за d не точка.
Окей, 6 тест прошли, но сломались на 20.
А там, говорят, нет 4 числа.
Три числа и три точки есть, а 4-го нет.
Как быть?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    int a, b, c, d;
    char p1, p2, p3, r;
    cin >> a >> p1 >> b >> p2 >> c >> p3 >> d >> r;
    (a >= 0 && a <= 255 && b >= 0 && b <= 255 && c >= 0 && c <= 255 && d >= 0 && d <= 255 &&
         d >= '0' && p1 == '.' && p2 == '.' && p3 == '.'  && r != '.') ?
        cout << "YES" :
        cout << "NO";
    return 0;
}

Кстати, вот это решение у меня принял:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <regex>
 
using namespace std;
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::regex reg("^((25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[0-9]{1,2})\\.){3}(25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[0-9]{1,2})$");
    if (regex_match(str, reg))
        cout << "YES";
    else
        cout << "NO";
    
    return 0;
}
0
9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89
07.04.2016, 12:12  [ТС]
MyLtYkRiTiK, Правильное решение выше уже есть.

Добавлено через 2 минуты
Kastaneda,
Цитата Сообщение от Kastaneda Посмотреть сообщение
С?
Сиплюшечниками что-ли назвать?
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 4
07.04.2016, 13:30
Да, я им и воспользовалась.
Но пытаюсь усовершенствовать то решение, что попроще)
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.04.2016, 15:51
Цитата Сообщение от MyLtYkRiTiK Посмотреть сообщение
Кстати, вот это решение у меня принял
Ну, что. Хоть препод на защите поржет.
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 4
07.04.2016, 15:58
avgoor, в смысле? Работает же.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.04.2016, 16:40
Цитата Сообщение от avgoor Посмотреть сообщение
Хоть препод на защите поржет.
если поймет
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.04.2016, 16:44
Цитата Сообщение от MyLtYkRiTiK Посмотреть сообщение
Работает же.
Не совсем. Ошибся я когда это писал. Должно быть:
C++
1
std::regex reg("^((25[0-5]|2[0-4][0-9]|[01][0-9][0-9]|[0-9]{1,2})\\.){3}(25[0-5]|2[0-4][0-9]|[01][0-9][0-9]|[0-9]{1,2})$");
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 4
07.04.2016, 16:45
Kastaneda, где-то на этом форуме прочла: работает — не трогай!
Как бы глубокий смысл в этой фразе...

Добавлено через 1 минуту
avgoor, эм)
У меня сработало и без этого.

А почему второй вариант правильный?
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.04.2016, 16:49
Цитата Сообщение от MyLtYkRiTiK Посмотреть сообщение
А почему второй вариант правильный
Первый не пройдет если среди чисел будет "000".
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.04.2016, 17:24
Цитата Сообщение от avgoor Посмотреть сообщение
Первый не пройдет если среди чисел будет "000".
теоретически ничего страшного в этом нет.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.04.2016, 17:40
Цитата Сообщение от Kastaneda Посмотреть сообщение
теоретически ничего страшного в этом нет
Поэтому первый вариант и прошел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2016, 17:40
Помогаю со студенческими работами здесь

Является ли заданная строка правильным IP-адресом
IP-адрес Для того чтобы выходить в Интернет, каждому компьютеру присваивается так называемый IP-адрес. Он состоит из четырех целых чисел...

Определить, является ли заданная строка правильным IP-адресом
Для того чтобы выходить в Интернет, каждому компьютеру присваивается так называемый IP-адрес. Он состоит из четырех целых чисел в диапазоне...

Регулярные выражения - является ли заданная строка правильным MAC-адресом?
Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом. – пример правильных выражений:...

Написать регулярное выражение определяющее является ли заданная строка правильным MAC-адресом
Доброго времени суток:) Помогите пож. решить задачу 5.Написать регулярное выражение определяющее является ли заданная строка...

Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом
Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом. Пример правильного выражения:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru