Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/05/2014, 18:44
CesarChavezO
 
Fecha de Ingreso: mayo-2014
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
no respeta la funcion scanf cuando hago el ejecutable

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;
}