Ir ao conteúdo
  • Cadastre-se

Gui Peres

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

1
  1. @arfneto Esclareceu muito essa sua resposta, obrigado! Só fiquei em dúvida em alguns pontos: B_Tree arvore; B_Tree A[4]; Quando você declara esse A como vetor de B_Tree isso significa o que? Existem 4 árvores B? Não entendi o porque. Também não compreendi para que serve o _id da struct Info e da Node. E por último, fiquei meio perdido onde seria definido a quantidade de chaves que contém em cada nó. Porém sua explicação foi praticamente uma aula, obrigado!!
  2. Tenho a tarefa de ler um arquivo e carregar suas informações para uma estrutura de árvore B, para assim desenvolver um algoritmo de busca para buscar as informações pelo nome, porém minhas dificuldade já está no começo, é a minha primeira vez usando este tipo de estrutura de árvore e não consigo manusear a mesma. Acredito que a estrutura de tal árvore seja assim: typedef struct { //estrutura do arquivo a ser lido char uf[3]; char municipio[61]; long long nis; char cpf[15]; char nome[61]; int parcela; float valor; int p; // posição do registro que contém a subárvore direita } arvb_info; struct no_arvb { //estrutura da árvore B int m; // número de chaves no nó int p0; // posição do registro que contém a primeira subárvore arvb_info chaves[100]; // vetor de elementos }; E depois estou lendo o arquivo assim: printf("\tEntre com o nome do arquivo: "); scanf("%39[^\n]", filename); if ((arq_dados = fopen(filename, "r")) == NULL) { fprintf(stderr, "\tErro de abertura do arquivo %s!\n", filename); fclose(arq_dados); return 1; } Se alguém pudesse me dar uma luz ou um caminho para carregar as informações em tal estrutura seria de grande ajuda!
  3. @arfneto Resolvi o tratamento para strings com repetições como você citou, obrigado por me lembrar deste problema! Agora continuo com a dificuldade de desenvolver a função para os arranjos, na função das permutações faço o loop de acordo com o size da string que é passada, agora no caso de uma permutação, n! / (n - k)!, não consigo imaginar como desenvolver o mesmo loop.
  4. Pessoal estou com um problema em um trabalho da faculdade, preciso programar um programa em C onde dada uma string preciso printar todas as permutações, arranjos e combinações. Meu problema vem nos arranjos, a permutação consegui porém nos arranjos não consegui pensar numa forma certa de implementar. Exemplo da saída do programa: Entrada: BOLA Saída: permutações: 1 B O L A 2 B O A L 3 B L O A 4 B L A O 5 B A O L 6 B A L O 7 O B L A 8 O B A L 9 O L B A 10 O L A B 11 O A B L 12 O A L B 13 L B O A 14 L B A O 15 L O B A 16 L O A B 17 L A B O 18 L A O B 19 A B O L 20 A B L O 21 A O B L 22 A O L B 23 A L B O 24 A L O B Entrada: elementos para arranjar: 3 Saída: arranjos(4,3): 24 1 B O L 2 B O A 3 B L O 4 B L A 5 B A O 6 B A L 7 O B L 8 O B A 9 O L B 10 O L A 11 O A B 12 O A L 13 L B O 14 L B A 15 L O B 16 L O A 17 L A B 18 L A O 19 A B O 20 A B L 21 A O B 22 A O L 23 A L B 24 A L O Meu código para as permutações ficou assim: //Função comparativa que permite uso do qsort int compare(const void* a, const void* b) { return (*(char*)a - *(char*)b); } //Função de Troca de caracters void troca(char* a, char* b) { char t = *a; *a = *b; *b = t; } int findCeil(char palavra[], char primeiro, int left, int h) { int ceilIndex = left; for (int i = left + 1; i <= h; i++) if (palavra[i] > primeiro && palavra[i] < palavra[ceilIndex]) ceilIndex = i; return ceilIndex; } //Função que printa as pemutações void sortedPermutations(char palavra[]) { int size = strlen(palavra); qsort(palavra, size, sizeof(palavra[0]), compare); bool isFinished = false; while (!isFinished) { static int x = 1; printf("%d\t%s\n", x++, palavra); int i; for (i = size; i >= 0; --i) if (palavra[i] < palavra[i + 1]) break; if (i == -1) isFinished = true; else { int ceilIndex = findCeil(palavra, palavra[i], i + 1, size - 1); troca(&palavra[i], &palavra[ceilIndex]); qsort(palavra + i + 1, size - i - 1, sizeof(palavra[0]), compare); } } } Não sei se o post acabou ficando muito grande para a compreensão, mas resumindo minha dificuldade está em desenvolver uma função para printar os arranjos agora, obrigado desde já!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...