hice el siguiente codigo para una calculadora de subneteo muy sencilla pero al tratar de meter los datos en el ejecutable no respeta los scanf y termina el programa sin dejarme acceder al llenado de los campos ayuda por favor es super urgente les dejo el codigo para que lo revisen
#include <math.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int rellenarocteto(int num);
int binarioadecimal(int octeto[7]);
int ts(int bits);
main(){
unsigned int octetoaux1,octetoaux2,octetoaux3,octuno, octdos, octtres, octcuatro, subredes,bprestados,totalsubredes,subredesutiles,t otalhost,hostutiles;
int octeto[7];
float baux;
char des= 'n',aux;
do{
printf("****** ***Bienvenido a la calculdora de subneteo ***********\n");
printf("\n1.- Inserta el primer octeto de la ip deseada\n");
scanf("%d",&octuno);
printf("\n2.- Inserta el segundo octeto de la ip deseada\n");
scanf("%d",&octdos);
printf("\n3- Inserta el tercer octeto de la ip deseada\n");
scanf("%d",&octtres);
printf("\n4- Inserta el ultimo octeto de la ip deseada\n");
scanf("%d",&octcuatro);
system("cls");
getch();
printf("\n Tu ip es la siguiente : %d.%d.%d.%d? s/n \n",octuno,octdos,octtres,octcuatro);
scanf("%c",&aux);
system("cls");
if(aux=='s'){
getch();
printf("\nInserta por favor la cantidad de subredes \n");
scanf("%d",&subredes);
system("cls");
baux=((log(subredes+2))/(log (2)));
bprestados= floor(baux);
if (octuno >= 1 && octuno <= 127 && subredes <=16777814 && subredes >0){
//mascara 255.0.0.0 16777214 max host o max subredes
if(bprestados <= 23){
if(bprestados <=8) {
octeto[7]=rellenarocteto(bprestados);
octetoaux3= binarioadecimal(octeto[7]);
octetoaux2= 0;
octetoaux1= 0;
}
if(bprestados >8 && bprestados <=16) {
octeto[7]=rellenarocteto(bprestados-8);
octetoaux3= 255;
octetoaux2= binarioadecimal(octeto[7]);
octetoaux1= 0;
}
if(bprestados >16 && bprestados <=23) {
octeto[7]=rellenarocteto(bprestados-16);
octetoaux3= 255;
octetoaux2= 255;
octetoaux1= binarioadecimal(octeto[7]);
}
totalsubredes=ts(bprestados);
totalhost=ts((24-bprestados));
subredesutiles=(totalsubredes-2);
hostutiles=(totalhost-2);
printf("\nPara la siguiente ip : %d.%d.%d.%d? s/n \n",octuno,octdos,octtres,octcuatro);
printf("\nSus valores son los siguientes:\n");
printf("\nClase: A\n");
printf("\nMascara por default: 255.0.0.0\n");
printf("\nNueva mascara: 255.%d.%d.%d\n",octetoaux3,octetoaux2,octetoaux1);
printf("\nBits prestados: %d\n",bprestados);
printf("\nTotal de subredes: %d\n",totalsubredes);
printf("\nTotal de host: %d\n",totalhost);
printf("\nSubredes utiles: %d\n",subredesutiles);
printf("\nHost utiles: %d\n",hostutiles);
getch();
//system("cls");
}
}
else if (octuno >= 128 && octuno <= 191 && subredes <=65534 && subredes >0){
//mascara 255.255.0.0 65534 maxhost o subredes
if(bprestados <= 16){
if(bprestados <=8) {
octeto[7]=rellenarocteto(bprestados);
octetoaux2= binarioadecimal(octeto[7]);
octetoaux1= 0;
}
if(bprestados >8 && bprestados <=15) {
octeto[7]=rellenarocteto(bprestados-8);
octetoaux2= 255;
octetoaux1= binarioadecimal(octeto[7]);
}
totalsubredes=ts(bprestados);
totalhost=ts((16-bprestados));
subredesutiles=(totalsubredes-2);
hostutiles=(totalhost-2);
printf("\nPara la siguiente ip : %d.%d.%d.%d? s/n \n",octuno,octdos,octtres,octcuatro);
printf("\nSus valores son los siguientes:\n");
printf("\nClase: B\n");
printf("\nMascara por default: 255.255.0.0\n");
printf("\nNueva mascara: 255.255.%d.%d\n",octetoaux2,octetoaux1);
printf("\nBits prestados: %d\n",bprestados);
printf("\nTotal de subredes: %d\n",totalsubredes);
printf("\nTotal de host: %d\n",totalhost);
printf("\nSubredes utiles: %d\n",subredesutiles);
printf("\nHost utiles: %d\n",hostutiles);
getch();
system("cls");
}
}
else if (octuno >= 192 && octuno <= 223 && subredes <=254 && subredes >0){
if(bprestados <= 7){
octeto[7]=rellenarocteto(bprestados);
octetoaux1= binarioadecimal(octeto[7]);
totalsubredes=ts(bprestados);
totalhost=ts((8-bprestados));
subredesutiles=(totalsubredes-2);
hostutiles=(totalhost-2);
printf("\nPara la siguiente ip : %d.%d.%d.%d? s/n \n",octuno,octdos,octtres,octcuatro);
printf("\nSus valores son los siguientes:\n");
printf("\nClase: C\n");
printf("\nMascara por default: 255.255.255.0\n");
printf("\nNueva mascara: 255.255.255.%d\n",octetoaux1);
printf("\nBits prestados: %d\n",bprestados);
printf("\nTotal de subredes: %d\n",totalsubredes);
printf("\nTotal de host: %d\n",totalhost);
printf("\nSubredes utiles: %d\n",subredesutiles);
printf("\nHost utiles: %d\n",hostutiles);
getch();
system("cls");
}
}
else if (octuno >= 224 && octuno <=255){
printf("\n Esta clase de ip no esta disponible en esta version.\n");
getch();
system("cls");
}
else {
printf("\nLos parametros son erroneos ¿Deseas salir de la calculadora? s/n \n");
scanf("%c",&des);
system("cls");
}
}
else{
printf("\nDeseas salir de la calculadora s/n \n");
scanf("%c",&des);
system("cls");
}
}
while(des=='n');{
getch();
}
}
int rellenarocteto(int num){
int conv[7],aux = 7, i=0;
for(i = 0; i <= num; i++);
{
conv[i]=1;
}
while(conv[aux]=!1)
{
conv[aux]=0;
aux--;
}
return conv[7];
}
int binarioadecimal(int octeto[7])
{
int res=0;
res= ((octeto[7]*(pow( 2, 0)))+(octeto[6]*(pow( 2, 1)))+(octeto[5]*(pow( 2, 2)))+(octeto[4]*(pow( 2, 3)))+(octeto[3]*(pow( 2, 4)))+(octeto[2]*(pow( 2, 5)))+(octeto[1]*(pow( 2, 6)))+(octeto[0]*(pow( 2, 7))));
return res;
}
int ts(int bits){
int res=0;
res=pow( 2, bits );
return res;
}