Ir ao conteúdo
  • Cadastre-se

UmPrograma

Membro Pleno
  • Posts

    182
  • Cadastrado em

  • Última visita

  1. Boa tarde, tudo bem? Gostaria de saber se a biblioteca conio.h é da linguagem C ou C++, e tambem da biblioteca sys/types.h. Alguem sabe me informar. (estava estudando uns algoritmos na internet e me deparei com essas bibliotecas, elas sao exclusivas da linguagem C.
  2. Nao vou menti que meu cerebro bug um pouco quando tenho que fazer essas mudancas de letra para numero. Nao entendo estão bem. Mas valeu... nessa parte quer dizer que o alfabeto com as letras maiuscalas comeca com o numero 65, ne?! legal
  3. @Flávio Pedroza Gente, não sabia. E o que eu faço? Uso a posicao da letra na string como valor para minha equação? adicionado 4 minutos depois Assim me retorna a posição, mas tenho a leve sensação que quem escolheu a posição fui eu. Fora que teve colisões #include <stdio.h> #include <string.h> int tamanhoTabela = 16; void convert (char *dado){ int i, vet[strlen(dado)], a=0; for(i=0;i<strlen(dado);i++){ a++; vet[a]= 11*i/tamanhoTabela; printf("A letra %c ocupa na tabela a posicao %d.\n", dado[i], vet[a]); } } int main() { int i=0; char *dado = "UNIVERSIDADE"; printf("\nA palavra a ser guardada na tababela hash sera UNIVERSIDADE.\n"); convert(dado); }
  4. Oi, como vão? Alguem poderia olhar a seguinte funcao e me dizer porque nao esta retornando, ficaria grato. Algo me intui que estou usando a funcao 'atoi' errado, mas nao sei se é somente isso. Esse exercicio se trata de uma funcao hash, onde cada letra da palavra UNIVERSIDADE tem que ser transformada em um indice da tabela hash. Segue a funcao. #include <stdio.h> #include <string.h> int tamanhoTabela = 16; void convert (char *dado){ int i, vet[strlen(dado)]; for(i=0;i<strlen(dado);i++){ vet[i]= 11*atoi(dado[i])/tamanhoTabela; printf("A letra %s ocupa na tabela a posicao %d.\n", dado[i], vet[i]); } } int main() { int i=0; char *dado = "UNIVERSIDADE"; printf("\nA palavra a ser guardada na tababela hash sera UNIVERSIDADE.\n"); convert(dado); }
  5. uiii adicionado 1 minuto depois kali esta ligado a pentest. ja que quero para o mesmo fim.
  6. @loumier que isso? nao entendi adicionado 0 minutos depois que variaveis seriam essas? adicionado 44 minutos depois pensei que sei atualizar com aquelas linhas de comando ja meio que conhecidas no linux, terminal do linux. Mas nao funciona (NAO SEI O QUE FAZER) Aproveitando o embalo, o que acham do Kali Linux? (meu objetivo é realmente entender sobre pentest, segurança na internet, forense...)
  7. Oi pessoal. estava querendo iniciar meus estudos em pentest e tal. Ai nao queria mudar para alguma distribuição linux, entao baixei o pentestbox no Windows mas não funciona. Nenhuma funcao é encontrada. e pede para atualizar e quando tento dar erro. Alguem ja passou por isso aqui? podem me ajudar?
  8. @r_Tray nao sei exatamente como seria otimizado. Mas agradeço. Valeu...a todos.
  9. estou tendo que transformar uma funcao c++ para c, ai to me perdendo em tudo. Pois nao conheco c++ :-( adicionado 6 minutos depois alias, a funcao puclic em c++ é o que?
  10. Oi Incluindo a biblioteca windows, isso permite que se use a funcao Sleep, que faz com que acha uma pausa/demora no tempo. porém achava que ele funciona com segundos, mas os valores que coloco la dentro nao surtem tantos efeitos. So se for valores maiores. Ela funciona com segundos, milisegundos? com o que? alguem sabe?
  11. todos os nos folhas (aqueles que nao tem filho) devem esta no mesmo nivel (na mesma altura) adicionado 7 minutos depois Está otimo, perfeito diria. So que é uma arvore balanceada, acho que essa seja nao seja balanceada... Nesse algortimo que fiz, nao sei se chegou a roda-lo, mas nele nao consigo passar para a funcao insere. Ai eu passei os valores no proprio main, e depois imprimir. (so que nem o meu é uma arvore 2-3) Não sei... adicionado 14 minutos depois Mas eu posso mudar de tal forma que tenha a aparencia de uma arvore 2-3.
  12. #include <stdio.h> #include <stdlib.h> typedef struct no{ int key1; int key2; int nkey; struct no *left; struct no *middle; struct no *right; }No; No *CriaNovo(){ No *aux; aux = malloc(sizeof(No)); return aux; } No *criaNo(int ch1, int ch2, int nchaves, No *pl, No *pc, No *pr){ No *n; n->key1=ch1; n->key2=ch2; n->nkey=nchaves; n->left=pl; n->middle=pc; n->right=pr; return n; } int isLeaf(No *no){ if(no==NULL){ return 1; } } void adicionaChave(No *no,int val, No* pon){ no->key1 =val; no->key2=pon->key1; } No *quebraNo(No *no, int val, int *rval, No *subarvore){ No *paux; if (val > no->key2) { // val esta mais a direita *rval = no->key2; // promove a antiga maior paux = no->right; no->right = NULL; // elimina o terceiro filho no->nkey = 1; // atualiza o número de chaves return criaNo(val, 0, 1, paux, subarvore, NULL); } else if (val >= no->key1){ // val esta no meio *rval = val; // continua sendo promovido paux = no->right; no->right = NULL; no->nkey = 1; return criaNo(no->key2, 0, 1, subarvore, paux, NULL); } else { // val esta a mais a esquerda *rval = no->key1; // primeiro cria o nó a direita paux = criaNo(no->key2, 0, 1, no->middle, no->right, NULL); no->key1 = val; // em seguida arruma o nó a esquerda no->nkey = 1; no->right = NULL; no->middle = subarvore; return paux; } } No *busca(No *raiz, int chave){ if(raiz==NULL){ printf("Árvore vazia!\n"); return NULL; } if(chave == raiz->key1){ return raiz; } if((raiz->nkey == 2) && chave == raiz->key2){ return raiz; } if(chave < raiz->key1){ return busca(raiz->left, chave); } else if((raiz->nkey == 2)&& chave < raiz->key2){ return busca(raiz->middle, chave); } else if((raiz->nkey == 2)&& chave > raiz->key2){ return busca(raiz->right, chave); } } No *insere( No **no, int val, int *rval){ No *paux, *paux2; int vaux, promov; if (*no == NULL) { // arvore vazia *no = (No *) malloc (sizeof(No)); *no = criaNo(val, 0, 0, NULL, NULL, NULL); // cria no folha com um valor return NULL; // nada a fazer depois } if (isLeaf(*no)){ // chegou a folha if ((*no)->nkey == 1){ // caso fácil adicionaChave(*no, val, NULL); return NULL; } else { paux = quebraNo(*no, val, &vaux, NULL); *rval = vaux; return paux; } } else { // continua a procura if (val < (*no)->key1) paux = insere( &((*no)->left), val, &vaux); else if (((*no)->nkey == 1) || (val < (*no)->key2)) paux = insere( &((*no)->middle), val, &vaux); else paux = insere( &((*no)->right), val, &vaux); if (paux == NULL) // nao promoveu return NULL; else if ((*no)->nkey == 1){ adicionaChave(*no, vaux, paux); return NULL; } else { paux2 = quebraNo(*no, vaux, &promov, paux); *rval = promov; return paux2; } } } void imprimir(No *no){ No* ajuda=no; if(no==NULL){ printf("Arvore vazia!\n"); } else if(no!=NULL){ if(no->nkey==1){ printf("%d, ", no->key1); if(no->left!=NULL){ printf("%d, ", no->left); return imprimir(no->left); } else if(no->right!=NULL){ printf("%d, ", no->right); return imprimir(no->right); } } if(no->nkey==2){ printf("%d, ", no->key1); printf("%d, ", no->key2); if(no->left!=NULL){ do{ printf("%d, ", no->left); }while (no->left==NULL); } if(no->middle!=NULL){ do{ printf("%d, ", no->middle); }while (no->middle==NULL); } if(no->right!=NULL){ do{ printf("%d, ", no->right); }while (no->right==NULL); } } } } int main(){ int key1, key2; No* aux, *a, *b, *c; aux = (No*)malloc(sizeof(No)); a=5;b=17;c=22; key1=10;key2=20; aux->key1 = key1;aux->key2 = key2;aux->nkey=2; aux->left = a;aux->middle = b;aux->right = c; imprimir(aux); return 0; }
  13. Como assim? o que a de errado? A funcao busca é recursiva adicionado 0 minutos depois kkk agora que fui entender que tu disse que nao esta errada. entao ta certa kkkkk ooo vida Tambem acho que é na funcao. Mas nao sei o que posso fazer

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...