From 504657f63dd7b5575ffc8a9649d2c2684b3c6d5a Mon Sep 17 00:00:00 2001 From: Eduardo Souza <eduardomsouza@ufpr.br> Date: Mon, 28 Oct 2024 21:19:13 -0300 Subject: [PATCH] [FIX] Impressao --- a.out | Bin 20816 -> 20872 bytes t2.c | 42 +++++++++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/a.out b/a.out index 59a6a27fa0f9cc3a0ea4b862fa67d16f795b3823..d09150a276fe6fcef6dbd8fb6994b7e23abaf262 100644 GIT binary patch delta 2597 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 O`D1`N<I2gJf$9K1RM2Sv delta 2240 zcmeBJ%y?lD;{*-H2@^H%bA<{pfI+ChWFba9&KPDek0EBWC!;>2;t>M~7oF~b2s89d zp2>7yM8f!sxZHZ-4`M3%R`T+Fia)kYjo;kE{GOMom3MQkpeDP5N4M*T?$8&V0Rr8w zFFKET^s-JBXJGK?JiY^D(2MZNdnBazYLSKXCqI#};<G{)dOlf4GF{lC+d;#l)Aa+$ zNDph*8~m+elQ&38O};B7#y?RE$x!|8lbNK|O;wS_et!G^zuEN*V{`2n`MQ%H-L5~n z8Nkl5M^<(D+vGTD&HBbS35+1~_U`!i|9|J!Eg*901`yf1=HLJSDIVP{su~O+6|O%F z4|sI9g4B6*wm$gx|NrsU1ONX22YK$bkViLI2;y)k6HIk8Shj-9E4|x26=Y&}E7%TD z@JtY8s7Hj4{I~!AVWxDpzW4{{bu)Cf9zo%PG{=d890d*A$6rCNIRSOe@zyg?*6RS6 ziQNto-BUrr9?6$H4nAV?V7vfwSv|-}r7BQW&~W-Hf@E~(*Z==t@-Q(lG=oiLgei4U zumlU#%sbwC0czdLK2S)(LxQ7wDo6&^Mv#TINl;Tf>bo7Vr~=1UJ+doUzQTjU1G^S* z5FKv?g#jZ21H)_CX0Wpm?iH{E3-I^E{Qv*Ic`ryI1Al$%6f`F@bhcgr$L)=O|Nnzc z@`pJVY%xd})kh%ZwaR!ELCkD!1!+ccQ9VecW<G)R1B(69yWQaA)*HasITe)dJZ5-w zPX#4IkIpGaKY*Ql2O1BrZ4s`K=$;A^Ms+eM5=sR<dRcuGgu!wBqV4nl|F3nLTS00O zE>y4t3)F0cnFmRjFQ@(mMThH;6c24k_9$U}5%PI*h1?WACn2zbkUW2IvXs0g|29D+ zp{`GpgXGmUKOu{Se1haya9(v#uyp-Wb9g@&0|Ubgu1}NWq$MWrl2@z$0Lo~`UEhGH zmq!^G7`k1bSh~KcW$Si*(&_q!f1B%l8`o03Zr>-}p>IG1N9Q?@&f_mWefj?%RFuF3 zuYm+F{rLa?Wg`Ov16WsZsd#tj6R;MrZ1i`Cme)yOY0pxz?$8(Y-M$bdU{iVi{r~^k z1uX4TD&Fn;qC50Scj*I=86fj#{rdm^wJKOTpi~wnTK(_;|L#z*qE4_y`+xrb@6lWO z!lT#siAQhfeUDz(2cDfDJizIHfdEpd$$eD&|G)XifBsgE|NsAk1J|QF6cqj<;Nq!- z^~ISF|NoynyxC0g6yM|qjt`RzDx}>MR8thH8B|khxfoPa6ntP@9fsP;3k(eE85pIR ztveVP7(n$y%>DoW_b@Op{JH=C{}ToV2A&81|NmiNV3_mZ|NkWn3=FLg|Nj?ZWME)@ z{QtiRBLhSC<NyCd7#SF@J^BB?gpq+k<>~+bQy3W-)SvzTzlD*3q2c-e|5q3p7(T!F z|Njdk1H<x{|No0HF);jk^Z&mI69dD%w><y<hcGcPIK2D+zl3RWnxT^9hx`BktAQfe zg&pK11{DSd1``Gbh8dF=8mb!#-2eX{EDTb?z`!8Fz`#(#z`($9|Ns99P%#iC!@$4* zs=P8M|1^|mJULm?NS;xDvZawcW7OnGBYDP-$(2U(jM<ZC8p$&*nY`0Tp6UCu$-j)G z)OtYPdj9`^FsOob<r8RQa^_`Y_G0E?=U@OCx`vT~Vc)CCR>o4SXBZh6oF+#aOH03D zWMDY*`u~3?P+<YrWXZ_G&apXAQIKnLhOGyahr;Gfw#S$mBPLfmx-%Y`e9-YdlZV3O zO-^x4Nph2gocCGnlLa}QfdLfMAeJ=~1A`EQ0K;}k5RZXj3xs0ugNkQMK?H)CCv&;v zak9umxK5KBUDO3%h(dVGAUA=-PtZkNaw8K1gCLV6gFpa87Dn!!%;+l4dXkBOL1FSn zCSk_MlLcMGS-&tbFerif{F@V97cy;@^LWO%nZxS=Gt)D^$*+9%xI7dfCU_`JR`PRW zJUBViPhSwD6)}0GpT1y#Aw(&R=Gpwx?>{4>#^jd)=9~$x5J}O=nt|qwrIQl_)d67@ B#{2*P diff --git a/t2.c b/t2.c index 070387f..676612b 100644 --- a/t2.c +++ b/t2.c @@ -168,7 +168,6 @@ void calculate_finger_table(Node* head, int max_id) { Node* current = head; printf("Max_id:%d\n", max_id); int log2_max_id = ceil(log2(max_id)); - current->tam_finger = log2_max_id; printf("Log2_max_id:%d\n", log2_max_id); do { for (int k = 1; k <= log2_max_id; k++) { @@ -182,13 +181,26 @@ void calculate_finger_table(Node* head, int max_id) { } current->finger[k-1] = temp->id; } + current->tam_finger = log2_max_id; current = current->next; } while (current != head); } // Função para imprimir todas as tabelas finger -void print_finger_table(Node* head, int timestamp) { +void print_finger_table(Node** nodes_involved,int num_nodes, int timestamp) { + for(int i = 0; i <= num_nodes; i++) { + printf("%d T %d {", timestamp, nodes_involved[i]->id); + for (int j = 0; j < nodes_involved[i]->tam_finger; j++) { + printf("%d", nodes_involved[i]->finger[j]); + if (j < nodes_involved[i]->tam_finger - 1) + printf(","); + } + printf("}\n"); + } +} + +void print_finger_table_completa(Node* head, int timestamp) { Node* current = head; do { printf("%d F %d {", timestamp, current->id); @@ -201,11 +213,12 @@ void print_finger_table(Node* head, int timestamp) { } + // Função para realizar lookup de uma chave -void lookup(Node* head, int timestamp, int node_id, int key){ +Node ** lookup(Node* head, int timestamp, int node_id, int key, int *num_nodes) { Node* current = head; - Node* nodes_involved[TAM_MAX_FINGER]; - int nodes_count = 0; + Node** nodes_involved = (Node**)malloc(TAM_MAX_FINGER * sizeof(Node*)); + *num_nodes = 0; while (current->id != node_id) { current = current->next; @@ -214,6 +227,7 @@ void lookup(Node* head, int timestamp, int node_id, int key){ printf("%d L %d {", timestamp, key); Node* start = current; //Meu nó partida int id_aux = current->id; + nodes_involved[(*num_nodes)++] = current; printf("%d,", current->id); while(1){ @@ -222,7 +236,8 @@ void lookup(Node* head, int timestamp, int node_id, int key){ for (int i = 0; i < current->key_count; i++) { if (current->keys[i] == key) { printf("%d}\n", current->id); - return; + nodes_involved[(*num_nodes)++] = current; + return nodes_involved; } } //Procura o maior nó conhecido pela finger_table que está acima do valor da chave @@ -249,13 +264,14 @@ void lookup(Node* head, int timestamp, int node_id, int key){ while(current->id != id_aux){ current = current->next; } - nodes_involved[nodes_count++] = current; //Adiciona o nó atual ao array de nós envolvidos + nodes_involved[*num_nodes++] = current; //Adiciona o nó atual ao array de nós envolvidos //Verificar se o nó atual já tem a chave for (int i = 0; i < current->key_count; i++) { if (current->keys[i] == key) { + nodes_involved[(*num_nodes)++] = current; printf("}\n"); - return; + return nodes_involved; } } //Se o nó atual não tiver a chave, continuar a busca @@ -263,7 +279,8 @@ void lookup(Node* head, int timestamp, int node_id, int key){ start = current; } printf("}\n"); - nodes_involved[nodes_count++] = current; + nodes_involved[(*num_nodes)++] = current; + return nodes_involved; } // Função para adicionar uma chave a um nó respeitando o limite de um nó guarda as chaves maiores que seu antecessor e menores e iguais a ele. @@ -299,6 +316,7 @@ void imprime_chaves(Node* head) { // Função principal para testar a inserção de nós int main() { Node* dht = NULL; + Node **nodes_involved = NULL; int timestamp, id, key; int max_id = 0; char op; @@ -315,10 +333,12 @@ int main() { } else if (op == 'I') { insert_key(dht, id, key); } else if (op == 'L') { - lookup(dht, timestamp, id, key); + int num_nodes = 0; + nodes_involved= lookup(dht, timestamp, id, key, &num_nodes); + print_finger_table(nodes_involved, num_nodes, timestamp); } else if (op == 'P'){ imprime_chaves(dht); - print_finger_table(dht, timestamp); + print_finger_table_completa(dht, timestamp); } } -- GitLab