Ir para conteúdo
Fórum Script Brasil
  • 0

Calculo de Sub Rede


lucasoliveiramarques

Pergunta

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 lucasoliveiramarques
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...