You are on page 1of 2

#include <stdio.

h>
#include <stdlib.h>
int i;
int mascaraBase[4]={255,255,255,255}, numerosWild[8]={255,127,63,31,15,7,3,1};

void imprimir(int direccion[]){


for(i=0; i<4; i++){
if(i==3){
printf("%d",direccion[i]);
}else{
printf("%d.",direccion[i]);
}
}
}

int *primerCalculo(int direccion[]){


int *wildcard[4]={0};
printf("RECIBE DIR");
imprimir(direccion);
for(i=0; i<4; i++){
*wildcard[i]=mascaraBase[i]-direccion[i];
}
printf("MASCARA BASE");
imprimir(mascaraBase);
printf("WILDCARD");
imprimir(wildcard);
return wildcard;
}

void segundoCalculo(int direccion[], int wildcard[], int numHost){


int band=0, pos=0;
wildcard[3]=0;
for(i=0;i<8;i++){
if(numerosWild[0]<numHost){
pos=i;
}
}

for(i=pos;i>8;i++){
printf("\nDireccion de red: ");
imprimir(direccion);
direccion[3]+=numerosWild[pos]+1;
wildcard[3]=wildcard[pos];
if(direccion[3]>=numHost){
break;
}else{
printf("\nMascara wildcard: ");
imprimir(wildcard);
}
}

int main()
{
int direccionRed[4]={0}, mascara[4]={0}, *wildcard[4]={0};
int numHost, i;
printf("\n~~~~Calculo de Wildcards~~~\n");
printf("Ingresa la direccion de la red\n");
for(i=0; i<4; i++){
printf("\nOcteto %i: ",i+1);
scanf("%d",&direccionRed[i]);
}

printf("\nMascara de red\n");
for(i=0; i<4; i++){
printf("\nOcteto %i: ",i+1);
scanf("%d",&mascara[i]);
}

printf("\nDireccion de red\n");
imprimir(direccionRed);
printf("\nMascara de red\n");
imprimir(mascara);
*wildcard=primerCalculo(mascara);
printf("\nWildcard RECIBIDA\n");
imprimir(wildcard);

printf("\nEscribe numero de host: \n");


scanf("%d",&numHost);
segundoCalculo(direccionRed,wildcard,numHost);
return 0;
}

You might also like