Для начала представим наш IP-адрес в двоичной системе. Переведем каждый байт отдельно. Имеем следующий IP-адрес: 00010100.00010001.00000000.00010000 Число после косой черты - количество единиц в маске подсети. Таким образом, маска подсети будет иметь вид: 11111111.11111111.11111111.11111100 Теперь найдем сетевой адрес, выполнив поразрядно логическое умножение IP-адреса на маску подсети. 00010100.00010001.00000000.00010000 - IP-адрес 11111111.11111111.11111111.11111100 - маска подсети 00010100.00010001.00000000.000100хх - сетевой адрес То есть минимальный адрес (заменяем "х" нулями) - 00010100.00010001.00000000.00010000 (20.17.0.16), а максимальный (заменяем "х" единицами) - 00010100.00010001.00000000.00010011 (20.17.0.19). ответом будут адреса из данного диапазона, то есть 20.16.0.17/30, 20.17.0.17/30, 20.17.0.18/30, 20.17.0.19/30.
#include <iostream>
int main()
{
using namespace std;
const string password = "123456";
string attempted;
cout << "Enter correct password" << endl;
for (int i = 0; i < 3; i++)
{
cin >> attempted;
if (attempted == password)
{
cout << "Successful login" << endl;
return 0;
}
else
{
cout << "Wrong password" << endl;
}
}
cout << "Access denied" << endl;
return 0;
}
00010100.00010001.00000000.00010000
Число после косой черты - количество единиц в маске подсети. Таким образом, маска подсети будет иметь вид:
11111111.11111111.11111111.11111100
Теперь найдем сетевой адрес, выполнив поразрядно логическое умножение IP-адреса на маску подсети.
00010100.00010001.00000000.00010000 - IP-адрес
11111111.11111111.11111111.11111100 - маска подсети
00010100.00010001.00000000.000100хх - сетевой адрес
То есть минимальный адрес (заменяем "х" нулями) - 00010100.00010001.00000000.00010000 (20.17.0.16), а максимальный (заменяем "х" единицами) - 00010100.00010001.00000000.00010011 (20.17.0.19).
ответом будут адреса из данного диапазона, то есть 20.16.0.17/30, 20.17.0.17/30, 20.17.0.18/30, 20.17.0.19/30.