• 0
Sign in to follow this  
lucasoliveiramarques

Calculo de Sub Rede

Question

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

Edited by lucasoliveiramarques

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this