{"id":593,"date":"2018-09-19T10:46:21","date_gmt":"2018-09-19T13:46:21","guid":{"rendered":"http:\/\/web.inf.ufpr.br\/didonet\/?page_id=593"},"modified":"2018-11-01T19:12:16","modified_gmt":"2018-11-01T22:12:16","slug":"trabalho-ci057-2018-2","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/teaching-disciplinas\/ci057-2018-2\/trabalho-ci057-2018-2\/","title":{"rendered":"Trabalho CI057 2018 2"},"content":{"rendered":"<h2>tRABALHO ci 057, segundo semestre de 2018<\/h2>\n<h2 class=\" \">Implementa\u00e7\u00e3o de \u00e1rvore bin\u00e1ria<\/h2>\n<p class=\" \">O objetivo do trabalho \u00e9 a implementa\u00e7\u00e3o das rotinas de manipula\u00e7\u00e3o de uma \u00e1rvore bin\u00e1ria A. A chave da \u00e1rvore bin\u00e1ria A ser\u00e1 uma outra \u00e1rvore bin\u00e1ria secund\u00e1ria B. Isto \u00e9, dever\u00e1 suportar 1 \u00e1rvore bin\u00e1rias principal, e N \u00e1rvores bin\u00e1rias B, sendo N igual ao n\u00famero de n\u00f3s da \u00e1rvore A. A ordena\u00e7\u00e3o da \u00e1rvore principal ser\u00e1 dada atrav\u00e9s da soma dos valores dos n\u00f3s da \u00e1rvore secund\u00e1ria.<\/p>\n<h2 class=\" \">ESPECIFICA\u00c7\u00c3O DETALHADA:<\/h2>\n<h3>\u00e1rvore a (principal)<\/h3>\n<h4>estrutura de dados<\/h4>\n<p>Dever\u00e1 conter 1 ponteiro para esquerda, 1 para direita, 1 ponteiro para o pai, e um ponteiro para a chave. Este ponteiro ser\u00e1 do tipo da \u00e1rvore B (secund\u00e1ria).<\/p>\n<h4>Funcionalidades<\/h4>\n<p>Dever\u00e1 conter fun\u00e7\u00f5es de manipula\u00e7\u00e3o: 1-busca, 2-inclus\u00e3o, 3-exclus\u00e3o e 4-impress\u00e3o em ordem, em formato de sa\u00edda especificado abaixo. A chave de busca, inclus\u00e3o e exclus\u00e3o ser\u00e1 dada atrav\u00e9s de uma \u00e1rvore B passada como par\u00e2metro (secund\u00e1ria).<\/p>\n<p>Uma aplica\u00e7\u00e3o dever\u00e1 ser implementada para usar as fun\u00e7\u00f5es de manipula\u00e7\u00e3o da \u00e1rvore. Esta aplica\u00e7\u00e3o ser\u00e1 um programa que recebe instru\u00e7\u00f5es textuais e as executa, gerando uma resposta. Neste programa a \u00e1rvore inicialmente est\u00e1 vazia, a cada comando a \u00e1rvore \u00e9 modificada, e ao final do arquivo (ou comandos) de entrada o programa termina.<\/p>\n<h3>\u00e1rvore B (secund\u00e1ria)<\/h3>\n<h4>estrutura de dados<\/h4>\n<p>Dever\u00e1 conter 1 ponteiro para esquerda, 1 para direita e um inteiro armazenando a chave (o ponteiro para o pai \u00e9 opcional).<\/p>\n<h4>Funcionalidades<\/h4>\n<p>Esta \u00e1rvore dever\u00e1 ter uma fun\u00e7\u00e3o de 1-cria\u00e7\u00e3o atrav\u00e9s de entrada especificada, 2-impress\u00e3o em ordem.<\/p>\n<h2 class=\" \">Entrada:<\/h2>\n<p class=\" \">A entrada deve conter comandos. Os comandos s\u00e3o i (inser\u00e7\u00e3o), b, (busca) e r, (remo\u00e7\u00e3o). Todos os comando tem um par\u00e2metro, que aparece separado do comando por um espa\u00e7o. Os comandos aparecem um por linha. O par\u00e2metero ser\u00e1 no formato de par\u00eanteses aninhados, representando a \u00e1rvore secund\u00e1ria B.<\/p>\n<p>i (1)\u00a0 <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 1<br \/>\ni (10(8)(30)) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 48<br \/>\ni (11(10)(17)) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 38<br \/>\ni (15) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 15<br \/>\ni (25(10(5)())()) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 40<br \/>\nb (25(10(5)())()) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 40<br \/>\nb (25(10(5)())()) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 40<br \/>\nb (10(7)(23)) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 40<br \/>\nr (11(10)(17)) <strong>Obs: <\/strong>o valor de indexa\u00e7\u00e3o desta sub-\u00e1rvore \u00e9 38<br \/>\nr (15)<\/p>\n<p class=\" \"><strong>Sa\u00edda:<\/strong><\/p>\n<p class=\" \">A cada comando executado uma sa\u00edda deve ser gerada (execu\u00e7\u00e3o da fun\u00e7\u00e3o 4). A sa\u00edda deve representar o estado das \u00e1rvores ap\u00f3s a execu\u00e7\u00e3o do comando. Para o comando de busca, a sa\u00edda deve tamb\u00e9m indicar se o n\u00famero total procurado est\u00e1 ou n\u00e3o na \u00e1rvore e os n\u00f3s percorridas (impress\u00e3o das \u00e1rvores secund\u00e1rias). O formato da descri\u00e7\u00e3o da \u00e1rvore \u00e9 de colchetes aninhados, com separador de linhas entre os n\u00f3s para a \u00e1rvore principal A, e par\u00eanteses aninhados em uma \u00fanica linha para as \u00e1rvores secund\u00e1rias B.<\/p>\n<p>Exemplos:<\/p>\n<p>A sa\u00edda, para cada comando de altera\u00e7\u00e3o (&#8220;i&#8221; ou &#8220;r&#8221;), ser\u00e1 a descri\u00e7\u00e3o da \u00e1rvore resultante. Os comandos de inclus\u00e3o acima resultar\u00e3o na \u00e1rvore abaixo:<\/p>\n<p>[[(1) : 1<br \/>\n[<br \/>\n]<br \/>\n[(10(8)(30)) : 48<br \/>\n[(11(10)(17)) : 38<br \/>\n[15 : 15<br \/>\n]<br \/>\n[(25(10(5)())()) : 40<br \/>\n]<br \/>\n][<br \/>\n]<br \/>\n]<\/p>\n<p>O comando de exclus\u00e3o resultar\u00e1 na \u00e1rvore abaixo<\/p>\n<p>[[(1) : 1<br \/>\n[<br \/>\n]<br \/>\n[(10(8)(30)) : 48<br \/>\n[(11(10)(17)) : 38<br \/>\n[\u00a0\u00a0\u00a0 \/\/<strong>O n\u00f3 (15)<\/strong>\u00a0 estava nesta posi\u00e7\u00e3o<br \/>\n]<br \/>\n[(25(10(5)())()) : 40<br \/>\n]<br \/>\n][<br \/>\n]<br \/>\n]<\/p>\n<p>A entrada para os comandos de busca ser\u00e1 uma sub-\u00e1rvore B. Note que mais de uma \u00e1rvore de entrada pode retornar a mesma sub-\u00e1rvore. A sa\u00edda para o comando de busca ser\u00e1 a seq\u00fc\u00eancia de n\u00f3s visitados. O comando de busca resultar\u00e1 na impress\u00e3o abaixo:<\/p>\n<p>(1) : 1<br \/>\n(10(8)(30) : 48<br \/>\n(11(10)(17)) : 38<br \/>\n(25(10(5)())()) : 40<\/p>\n<p><strong>Requisitos:<\/strong><\/p>\n<p>O nome do execut\u00e1vel deve ser <strong>busca<\/strong>.<\/p>\n<p>N\u00e3o deve ter nenhuma op\u00e7\u00e3o de linha comando. O resultado deve sempre lido e escrito na sa\u00edda padr\u00e3o.<br \/>\nO que deve ser entregue:<\/p>\n<p>Al\u00e9m dos arquivos fonte, deve acompanhar um makefile e um arquivo README explicando o que foi feito e com o nome dos autores.<\/p>\n<p>Para testar:<\/p>\n<p>busca &lt; teste.in &gt; teste_stdin.out<br \/>\nou<br \/>\nbusca teste.in &gt; teste_arq.out<br \/>\n<br class=\" \" \/><\/p>\n<h3>ENTREGA<\/h3>\n<p>Entregar os arquivos fontes e o Makefile. Este deve ser compilado facilmente nos servidores do Dinf, atrav\u00e9s de comando make.<\/p>\n<div id=\"parent-fieldname-text-15e8262a-6a79-4f9d-bb33-87cbc1533c09\" class=\"kssattr-macro-rich-field-view kssattr-templateId-widgets\/rich kssattr-atfieldname-text \"><b>IMPORTANTE! DATA DE ENTREGA : 21<\/b> <strong>de novembro<\/strong><\/div>\n<p><b>MODO DE ENTREGA : <\/b> enviar os arquivos por email para marcos.ddf _at_ inf.ufpr.br (at\u00e9 as 24h).<br \/>\nO trabalho pode ser individual ou em duplas. No assunto, preencher com &#8220;Entrega trabalho 057&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>tRABALHO ci 057, segundo semestre de 2018 Implementa\u00e7\u00e3o de \u00e1rvore bin\u00e1ria O objetivo do trabalho \u00e9 a implementa\u00e7\u00e3o das rotinas de manipula\u00e7\u00e3o de uma \u00e1rvore bin\u00e1ria A. A chave da \u00e1rvore bin\u00e1ria A ser\u00e1 uma outra \u00e1rvore bin\u00e1ria secund\u00e1ria B. Isto \u00e9, dever\u00e1 suportar 1 \u00e1rvore bin\u00e1rias principal, e N \u00e1rvores bin\u00e1rias B, sendo N&hellip;<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":535,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-593","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/comments?post=593"}],"version-history":[{"count":6,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/593\/revisions"}],"predecessor-version":[{"id":658,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/593\/revisions\/658"}],"up":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/535"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}