Bem tenho um trabalho da faculdade (Faculdade de Tecnologia Senac GO) para fazer so que não tenho a minima ideia de como realizar o calculo e o programa tem que fazer o seguinte:
Compilador que eu utilizo e o Dev-C++
"Desenvolver um programa que seja capaz de fornecer a faixa de IPs utilizáveis para cada uma das VLANs criadas na infra-estrutura do projeto.
O usuário deve entrar com endereço de rede o programa deve informar o endereço de broadcast e faixa IP utilizável.
Cada octeto deve ser armazenado em uma variável separada"
já cheguei neste resultado
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct subrede{
int oct1,oct2,oct3,oct4;
}Subrede;
int menu(int op);
int menu2(int op1);
void insere(Subrede x[],int t);
void calc(Subrede x[],int qtdSR, int qtdHT);
int qtdSR(int qtd);
int qtdHT(int qtd);
int main(){
system("color f0");
Subrede vet[1];
int op,op1;
int qtdeHT=-1, qtdeSR=-1;
do{
op=menu(op);
switch (op){
case 0:
printf("Obrigado por utilizar o programa!");
break;
case 1:
insere(vet,1);
break;
case 2:
do{
op1=menu2(op1);
switch (op1){
case 1:
qtdeSR=qtdSR(qtdeSR);
break;
case 2:
qtdeHT=qtdHT(qtdeHT);
calc(vet, qtdeSR, qtdeHT);
break;
}
}while(op1!=1 || op1!=2);
break;
case 3:
break;
}
}while(op!=0);
system("pause");
return 0;
}
int menu(int op){
do{
printf("Escolha uma opcao:\n\n");
printf("1 - Inserir\n");
printf("2 - Calcular\n");
printf("3 - Imprimir\n");
printf("0 - Sair\n\n");
printf("Opcao: ");
scanf("%d",&op);
}while(op<0 || op>3);
return op;
}
int menu2(int op1){
int sai=-1;
do{
printf("\n\nEscolha uma opcao:\n\n");
printf("1 - Informar quantidade de sub redes: \n");
printf("2 - Informar quantidade de host por sub rede: \n");
scanf("%d",&op1);
if(op1<1 || op1>2){
printf("Opcao Invalida!");
}else{
sai=1;
}
}while(sai!=1);
return op1;
}
void insere(Subrede x[],int t){
do{
printf("Informe o 1%c octeto: ",167);
scanf("%d",&x[t].oct1);
}while(x[t].oct1<=0 || x[t].oct1>255);
do{
printf("Informe o 2%c octeto: ",167);
scanf("%d",&x[t].oct2);
}while(x[t].oct1<=0 || x[t].oct1>255);
do{
printf("Informe o 3%c octeto: ",167);
scanf("%d",&x[t].oct3);
}while(x[t].oct1<=0 || x[t].oct1>255);
do{
printf("Informe o 4%c octeto: ",167);
scanf("%d",&x[t].oct4);
}while(x[t].oct1<=0 || x[t].oct1>255);
}
int qtdSR(int qtd){
printf("Informe a quantidade de sub redes deseja calcular: \n");
scanf("%d",&qtd);
return qtd;
}
int qtdHT(int qtd){
printf("Informe a quantidade de Hosts deseja ter em cada sub rede: \n");
scanf("%d",&qtd);
return qtd;
}
void calc(Subrede x[],int qtdSR, int qtdHT){
int mascara=0,cont=0,sai=8;
if(qtdSR!=-1){
}else{
if(qtdHT!=-1){
do{
if(mascara<=qtdHT){
cont=cont+1;
mascara=mascara*2;
printf("pow %d\n",mascara);
printf("Cont: %d\n\n",cont);
}
}while(mascara<qtdHT/* || cont<=7*/);
}
}
}
so que na função "calc" eu to com um problema nessa parte comentada quando a variável "cont" chega <=7 ele não para.
Pergunta
lucasoliveiramarques
Bem tenho um trabalho da faculdade (Faculdade de Tecnologia Senac GO) para fazer so que não tenho a minima ideia de como realizar o calculo e o programa tem que fazer o seguinte:
Compilador que eu utilizo e o Dev-C++
"Desenvolver um programa que seja capaz de fornecer a faixa de IPs utilizáveis para cada uma das VLANs criadas na infra-estrutura do projeto.
O usuário deve entrar com endereço de rede o programa deve informar o endereço de broadcast e faixa IP utilizável.
Cada octeto deve ser armazenado em uma variável separada"
já cheguei neste resultado
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct subrede{ int oct1,oct2,oct3,oct4; }Subrede; int menu(int op); int menu2(int op1); void insere(Subrede x[],int t); void calc(Subrede x[],int qtdSR, int qtdHT); int qtdSR(int qtd); int qtdHT(int qtd); int main(){ system("color f0"); Subrede vet[1]; int op,op1; int qtdeHT=-1, qtdeSR=-1; do{ op=menu(op); switch (op){ case 0: printf("Obrigado por utilizar o programa!"); break; case 1: insere(vet,1); break; case 2: do{ op1=menu2(op1); switch (op1){ case 1: qtdeSR=qtdSR(qtdeSR); break; case 2: qtdeHT=qtdHT(qtdeHT); calc(vet, qtdeSR, qtdeHT); break; } }while(op1!=1 || op1!=2); break; case 3: break; } }while(op!=0); system("pause"); return 0; } int menu(int op){ do{ printf("Escolha uma opcao:\n\n"); printf("1 - Inserir\n"); printf("2 - Calcular\n"); printf("3 - Imprimir\n"); printf("0 - Sair\n\n"); printf("Opcao: "); scanf("%d",&op); }while(op<0 || op>3); return op; } int menu2(int op1){ int sai=-1; do{ printf("\n\nEscolha uma opcao:\n\n"); printf("1 - Informar quantidade de sub redes: \n"); printf("2 - Informar quantidade de host por sub rede: \n"); scanf("%d",&op1); if(op1<1 || op1>2){ printf("Opcao Invalida!"); }else{ sai=1; } }while(sai!=1); return op1; } void insere(Subrede x[],int t){ do{ printf("Informe o 1%c octeto: ",167); scanf("%d",&x[t].oct1); }while(x[t].oct1<=0 || x[t].oct1>255); do{ printf("Informe o 2%c octeto: ",167); scanf("%d",&x[t].oct2); }while(x[t].oct1<=0 || x[t].oct1>255); do{ printf("Informe o 3%c octeto: ",167); scanf("%d",&x[t].oct3); }while(x[t].oct1<=0 || x[t].oct1>255); do{ printf("Informe o 4%c octeto: ",167); scanf("%d",&x[t].oct4); }while(x[t].oct1<=0 || x[t].oct1>255); } int qtdSR(int qtd){ printf("Informe a quantidade de sub redes deseja calcular: \n"); scanf("%d",&qtd); return qtd; } int qtdHT(int qtd){ printf("Informe a quantidade de Hosts deseja ter em cada sub rede: \n"); scanf("%d",&qtd); return qtd; } void calc(Subrede x[],int qtdSR, int qtdHT){ int mascara=0,cont=0,sai=8; if(qtdSR!=-1){ }else{ if(qtdHT!=-1){ do{ if(mascara<=qtdHT){ cont=cont+1; mascara=mascara*2; printf("pow %d\n",mascara); printf("Cont: %d\n\n",cont); } }while(mascara<qtdHT/* || cont<=7*/); } } }so que na função "calc" eu to com um problema nessa parte comentada quando a variável "cont" chega <=7 ele não para.do{ if(mascara<=qtdHT){ cont=cont+1; mascara=mascara*2; printf("pow %d\n",mascara); printf("Cont: %d\n\n",cont); } }while(mascara<qtdHT/* || cont<=7*/);alguém tem solução para esse codigo ou tenho que começar desde o inicio :unsure:
por enquanto so tem a parte de preenchimento dos dados esta faltando a parte do calculo que eu não tenho a minima ideia de como fazer
Editado por lucasoliveiramarquesLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.