Ir ao conteúdo
  • Cadastre-se

Danielle Emely

Membro Júnior
  • Posts

    16
  • Cadastrado em

  • Última visita

Tudo que Danielle Emely postou

  1. @arfneto não precisamente recentes, o ideal seria dizer alguma boa, mas não muito conhecida. @AdrianoSiqueira essa eu não conhecia. Inclusive, conheço um pessoal que usa mesmo, se não me engano era essa plataforma ou alguma muito parecida
  2. @devair1010 depuração pra reduzir erros, não sabia que tinha tipos =P. Não costumo usar um stw com debug, mas tava pensando em passar meus códigos por um processo de debugging. Vou usar algumas vezes quando for preciso, costumo compilar meus códigos via terminal mesmo. Codeblocks tem mesmo, alguns não recomendam e outros sim. Ainda tô pensado haha @arfneto bacana, parece uma boa IDE mesmo. Queria ver se alguém recomenda um mais recente também, pensando na experiência enquanto usuário também Obrigada, pelas indicações
  3. Alguém conhece um bom software para fazer debug de códigos em C/C++? Queria ver quais vocês indicam
  4. @arfneto Ahh sim, agora ficou mais claro. Acho que interpretei mal :P, mas obrigada!!
  5. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> typedef struct{ int* vet; char** vetNome; }Teste; void mergeSort(Teste, int, int ); void intercala(Teste, int, int , int); void bubbleSort(Teste test, int tamanho); int pesquisaBin(Teste, char* chave, int, int); int main(){ Teste test; test.vetNome = malloc(sizeof(char*) * 7); for (int i = 0; i < 100; i++){ test.vetNome[i] = malloc(sizeof(char) *100); } strcpy(test.vetNome[0],"Aberlado Barbosa\n"); strcpy(test.vetNome[1], "José Frances\n"); strcpy(test.vetNome[2], "Barbara Vitoria\n"); strcpy(test.vetNome[3], "Maria Silva\n"); strcpy(test.vetNome[4], "Bia Menezes\n"); strcpy(test.vetNome[5], "Samile Tania\n"); strcpy(test.vetNome[6], "Maria Souza\n"); test.vet = malloc(sizeof(int) * 5); int k = 0; for (int i = 4; i >= 0; i--){ test.vet[k] = i; k++; } mergeSort(test,0,6); //bubbleSort(test,5); int pos = pesquisaBin(test, "José Frances\n", 0, 6); for (int i = 0; i < 7; i++){ printf("posição %d, nome: %s\n",i,test.vetNome[i] ); } printf(" Posicao de José: %d\n", pos); return 0; } // ordenação com merge sort void mergeSort(Teste test, int inicio, int fim){ if(inicio < fim){ int meio = ((inicio + fim)/2); mergeSort(test, inicio, meio); mergeSort(test, meio + 1, fim); intercala(test, inicio, meio, fim); } } void intercala(Teste test, int inicio, int meio, int fim){ int tamanho; int i, j, k, esq, dir; int fimEsq = 0, fimDir = 0; tamanho = fim -inicio + 1; esq = inicio; dir = meio + 1; char** vetOrdenado; vetOrdenado = malloc(sizeof(char*) * tamanho); for (int l = 0; l < tamanho; l++){ vetOrdenado[l] = malloc(sizeof(char) *100); } if(vetOrdenado != NULL){ for(i = 0; i < tamanho; i++){ int tam1 = strlen(test.vetNome[esq]); int tam2 = strlen(test.vetNome[dir]); int tamMax; if(tam1>tam2){ tamMax = tam1; }else{ tamMax = tam2; } if(!fimEsq && !fimDir){ if(strncmp(test.vetNome[esq], test.vetNome[dir], tamMax) < 0) strcpy(vetOrdenado[i], test.vetNome[esq++]); else strcpy(vetOrdenado[i], test.vetNome[dir++]); if(esq > meio) fimEsq = 1; if(dir > fim) fimDir = 1; }else{ if(!fimEsq) strcpy(vetOrdenado[i], test.vetNome[esq++]); else strcpy(vetOrdenado[i], test.vetNome[dir++]); } } } for(j=0, k = inicio; j < tamanho;j++, k++){ strcpy(test.vetNome[k], vetOrdenado[j]); } } //ordernação com bubble sort void bubbleSort(Teste test, int tamanho){ int i, continua, fim = tamanho; char* aux = malloc(sizeof(char)*50); do{ continua = 0; for (i = 0; i < tamanho-1; i++){ int tam1 = strlen(test.vetNome[i]); int tam2 = strlen(test.vetNome[i+1]); int tamMax; if(tam1>tam2){ tamMax = tam1; }else{ tamMax = tam2; } if(strncmp(test.vetNome[i], test.vetNome[i+1], tamMax) > 0){ strcpy(aux,test.vetNome[i]); strcpy(test.vetNome[i],test.vetNome[i+1]); strcpy(test.vetNome[i+1],aux); continua=i; } } fim--; }while(continua!=0); } // pesquisa binária de strings int pesquisaBin(Teste test, char* chave, int esq, int dir){ int m; int tamanho = strlen(chave); if(strncmp(test.vetNome[esq], chave, tamanho) == 0){ return esq; }else if(strncmp(test.vetNome[dir], chave, tamanho) == 0){ return dir; }else{ m = (esq + dir)/2; if(strncmp(test.vetNome[m], chave, tamanho) < 0){ pesquisaBin(test, chave, m + 1, dir); }else{ pesquisaBin(test, chave, esq, m - 1); } } } usei strncmp @arfneto assim como tinha dito para o@devair1010 , ele era bom ver casos de nomes iguais e sobrenomes diferentes. Ai tem as versões de ordenação bubble e merge, assim como busca binária. E o tempo de execução do merg é melhor no pior caso do que o pior caso do bubble :). Muito obrigada, pessoal!! Espero ajudar quem precisa
  6. @arfneto e @@devair1010 Eu consegui implementar com merge sort e bubble sort!! Tentei com o bubble e vi o que errei no merge, como vou precisar de uma struct, fiz uma de teste. Querem ver o código? Tava pensando em postar amanhã mais tarde, mas não sei se faço outro fórum pra isso adicionado 5 minutos depois @arfneto é em c
  7. Olá, estou realizando um trabalho em que preciso ordenar um vetor de strings com merge sort, no entanto, estou com dificuldade em como vou fazer as comparações entre nomes de pessoas, pensando nas possibilidades de nomes com letra inicial igual, aí sendo preciso olhar as demais letras pra ver qual nome virá primeiro, e de nomes iguais precisando olhar os sobrenomes pra ver qual dos nomes virá primeiro. Alguém pode me orientar em como vou fazer essa ordenação usando merge sort?
  8. @isrnick nem imprime a matriz, também achei que era pra funcionar mas consegui uma solução. muito obrigada @devair1010 a solução que encontrei foi essa: for(int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ fscanf(leitura, "%c", &c); if(c == '.' || c == '-' || c == 'x' || c == 'X'){ matriz[i][j] = c; }else{ j--; } } } no caso peguei aquilo que me interessava e o resto não armazenaria na matriz. Obrigada pela ajuda de vocês, foi muito bem vida cada uma. Agora tá tudo certinho
  9. @isrnick eu tinha tentado isso e não deu certo
  10. Estou lendo uma matriz de char de um arquivo texto, porém não quero armazenar na matriz o '\n', como faço para ignorá-lo? Exemplo de matriz que está no arquivo: . . x . . . . . . - . . . . . . . . x . . . . . - . . . . . x x . . . . . . . . . . Achei que daria certo porquê pensei que o fscanf não leria o \n, mas quando imprimi essa matriz, tava quebrando linha e ainda faltou alguns caracteres, e acho que espaços pra eles o caractere '\n' ocupou. Meu código para a leitura tá assim: for(int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ fscanf(leitura, "%c", &c); if(c != ' '){ matriz[i][j] = c; }else{ j--; } } }
  11. @AnsiC eu usei NULL mesmo, mas achei que faria só uma comparação pra ver se meu arquivo não apontava pra nada, esse perror me mostra o erro especificamente? Vou usar ele aqui pra ver, e obrigada adicionado 3 minutos depois FILE* leitura = fopen(nomeArquivo, "r"); if (leitura == NULL) { printf ("Erro ao abrir o arquivo\n"); } meu código usando o NULL na comparação tá assim, @AnsiC
  12. Existe alguma função que me retorna se houve algum erro na tentativa de abertura de um arquivo texto?

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!