Sei sulla pagina 1di 5

/* Inserisco da tastiera quattro byte, che è il formato di un indirizzo ipv4, eseguo un controllo per ogni

inserimento di un byte,per verificare che il byte inserito sia corretto, in seguito faccio tre controlli per
verificare la classe dell'indirizzo ip.

Dopo ciò inserisco il numero di host e grazie ad una serie di calcoli riesco a far visualizzare il CIDR e le
sottoreti possibili,ovviamente tutto questo sempre verificando che il numero di host sia compatibile
nella classe in cui stiamo operando.*/

#include<iostream>

#include<cmath>

using namespace std;

int byte1,byte2,byte3,byte4,host,bitazero,bitsottoreti,sottoreti,chird;

int main(){

//byte1

cout<<"Inserisci il primo byte.\n";

cin>>byte1;

while(byte1<1 or byte1>224){

system("cls");

cout<<"L'indirizzo e' di classe d o e, oppure il primo byte e' superiore a 255 o minore di 1.\n";

cout<<"Inserisci il primo byte.\n";

cin>>byte1;

//byte2

cout<<"Inserisci il secondo byte.\n";

cin>>byte2;

while(byte2<0 or byte2>255){

system("cls");

cout<<"Il secondo byte e' superiore a 255 o minore di 0.\n";


cout<<"Inserisci il secondo byte.\n";

cin>>byte2;

//byte3

cout<<"Inserisci il terzo byte.\n";

cin>>byte3;

while(byte3<0 or byte3>255){

system("cls");

cout<<"Il terzo byte e' superiore a 255 o minore di 0.\n";

cout<<"Inserisci il terzo byte.\n";

cin>>byte3;

//byte4

cout<<"Insersici il quarto byte.\n";

cin>>byte4;

while(byte4<0 or byte4>255){

system("cls");

cout<<"Il quarto byte e' superiore a 255 o minore di 0.\n";

cout<<"Insersici il quarto byte.\n";

cin>>byte4;

//classe a

if (byte1>0 & byte1<128){

system("cls");

cout<<"L'indirizzo "<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<" e' di classe A.\n";


cout<<"La subnet-mask di default della classe e' 255.0.0.0.\n";

cout<<"Inserisci il numero di host.\n";

cin>>host;

host=host+3; //broadcast,rete,gateway

while(host<65536 or host>16777216){

system("cls");

cout<<"L'indirizzo non puo' coprire gli host richiesti.\n";

cout<<"Inserisci il numero di host.\n";

cin>>host;

host=host+3; //broadcast,rete,gateway

bitazero=0;

for(int s=1; s<host; s=s*2){

bitazero=bitazero+1;

chird=32-bitazero;

bitsottoreti=32-8-bitazero;

sottoreti=pow(2, bitsottoreti );

cout<<"Le sottoreti "<<" dell'indirizzo


"<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<"/"<<chird<<" sono "<<sottoreti;

// classe b

if (byte1>127 & byte1<192 ){

system("cls");

cout<<"L'indirizzo "<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<" e' di classe B.\n";

cout<<"La subnet-mask di default della classe e' 255.255.0.0.\n";

cout<<"Inserisci il numero di host.\n";


cin>>host;

host=host+3; //broadcast,rete,gateway

while(host<256 or host>65536){

system("cls");

cout<<"L'indirizzo non puo' coprire gli host richiesti.\n";

cout<<"Inserisci il numero di host.\n";

cin>>host;

host=host+3; //broadcast,rete,gateway

bitazero=0;

for(int s=1; s<host; s=s*2){

bitazero=bitazero+1;

chird=32-bitazero;

bitsottoreti=32-16-bitazero;

sottoreti=pow(2, bitsottoreti );

cout<<"Le sottoreti "<<" dell'indirizzo


"<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<"/"<<chird<<" sono "<<sottoreti;

// classe c

if (byte1>191 & byte1<225 ){

system("cls");

cout<<"L'indirizzo "<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<" e' di classe C.\n";

cout<<"La subnet-mask di default della classe e' 255.255.255.0.\n";

cout<<"Inserisci il numero di host.\n";

cin>>host;

host=host+3; //broadcast,rete,gateway

while(host<1 or host>256){
system("cls");

cout<<"L'indirizzo non puo' coprire gli host richiesti.\n";

cout<<"Inserisci il numero di host.\n";

cin>>host;

host=host+3; //broadcast,rete,gateway

bitazero=0;

for(int s=1; s<host; s=s*2){

bitazero=bitazero+1;

chird=32-bitazero;

bitsottoreti=32-24-bitazero;

sottoreti=pow(2, bitsottoreti );

cout<<"Le sottoreti "<<" dell'indirizzo


"<<byte1<<"."<<byte2<<"."<<byte3<<"."<<byte4<<"."<<"/"<<chird<<" sono "<<sottoreti;

Potrebbero piacerti anche