示例#1
0
// Ver http://www.graphclasses.org/smallgraphs.html#K2Uclaw
vector<nodo> kn_union_claw_m_complemento(int n, int m) {
    vector<nodo> kn = k(n);
    vector<nodo> k1_n = claw(m);
    vector<nodo> Gunion = graph_union(kn, k1_n);
    return complemento(Gunion);
}
示例#2
0
// Ver http://mathworld.wolfram.com/FanGraph.html
// F n,m  = Kn complemento + Path m
vector<nodo> fan(int n, int m) {
    vector<nodo> kn = k(n);
    vector<nodo> knComp = complemento(kn);
    vector<nodo> Pgraph = path(m);
    return graph_join(knComp, Pgraph);
}
示例#3
0
int main()
{


    int in1[16] = {0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0}; //2.640625 - 0100000101001000
    int in2[16] = {1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0}; //2.640625 - 0100000101001000

    int out[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    int i = 0, j = 0, k = 0;

    //Variaveis e A
    int a[11] = {1,0,0,0,0,0,0,0,0,0,0};
    int expoente_binario_a[5];
    int expoente_a = 0;
    int sinal_a = 0;

    //Variaveis de B
    int b[11] = {1,0,0,0,0,0,0,0,0,0,0};
    int expoente_binario_b[5];
    int expoente_b = 0;
    int sinal_b = 0;

    int deslocamento = 0;
    int normalizar = 0;

    int result[11] = {0,0,0,0,0,0,0,0,0};
    int formato_saida[10] = {0,0,0,0,0,0,0,0};
    int expoente_result[5];
    int sinal_result = 0;

    //Verificar se é Infinito ou Zero
    int qtd1 = 0;
    int qtd0 = 0;


    sinal_a = in1[0];
    sinal_b = in2[0];

    /****CALCULO DO EXPOENTE A e B*********/
    for(j = 1; j <= 5; j++)
    {
        expoente_binario_a[i] = in1[j];
        i++;
    }
    expoente_a = Binario_para_decimal(expoente_binario_a);
    printf ("Expoente A: %d", expoente_a);

    i = 0;
    for(j = 1; j <= 5; j++)
    {
        expoente_binario_b[i] = in2[j];
        i++;
    }
    expoente_b = Binario_para_decimal(expoente_binario_b);
    printf ("Expoente B: %d\n", expoente_b);
    /****************************************/

    /****SEPARANDO OS DADOS DE ENTRADA PARA A E B*********/
    i = 1;
    for(j = 6; j <= 15; j++)
    {
        a[i] = in1[j];
        i++;
    }
    printf ("Dado a: ");
    imprimir(a, 11);

    i = 1;
    for(j = 6; j <= 15; j++)
    {
        b[i] = in2[j];
        i++;
    }
    printf ("Dado b: ");
    imprimir(b,11);
    /***************************************************/

    /****CALCULO DO EXPOENTE PARA DESLOCAMENTO*********/
    deslocamento = expoente_a - expoente_b;

    if(deslocamento > 0)
        shift(b, deslocamento);
    else if(deslocamento < 0)
        shift(a, deslocamento);
    /*************************************************/


    /****COMPLEMENTO, SOMA E NORMALIZAÇÃO*********/
    if(sinal_b == 1)
        complemento(b);

    printf("\nComplemento de B: ");
    imprimir(b, 11);
    normalizar = soma(a,b,result);
    printf("\nNoraliza: %d\n", normalizar);

    printf ("Resultado da soma: ");
    imprimir(result, 11);

    printf("\n");

    if(expoente_a >= expoente_b)
    {
        for(i = 0; i < 5; i++)
            expoente_result[i] = expoente_binario_a[i];
    }
    else
    {
        for(i = 0; i < 5; i++)
            expoente_result[i] = expoente_binario_b[i];
    }

    if(normalizar)
        somaExpoente(expoente_result, normalizar);


    j = 1;
    for(i = 0; i < 10; i++)
    {
        formato_saida[i] = result[j];
        j++;
    }

    if(sinal_a == sinal_b)
        sinal_result = sinal_a;
    else    sinal_result = 1;


    printf("\nExpoente Result: ");
    imprimir(expoente_result, 5);
    /*************************************************/

    /*************VERIFICAR INFINITO OU ZERO**********/
    for(i = 0; i < 10; i++)
    {
        if(formato_saida[i] == 0)
            qtd0++;
    }

    if(qtd0 == 10)
    {
        for(i = 0; i < 5; i++)
            if(expoente_result[i])
                qtd1++;

        if(qtd1 == 5)
            printf("Infinito");
        else printf("0");
    } /*************************************************/
    else
    {
    /****************SAIDA NORMALIZADA*****************/
    saida(sinal_result, expoente_result, formato_saida, out);

    printf("\nOut: ");
    imprimir(out, 16);
    }/*************************************************/





    return 0;
}