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