Ir ao conteúdo
  • Cadastre-se

Heyheyhey

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

Reputação

8
  1. @AdrianoSiqueira Eu não to conseguindo pegar muito bem a ideia ...
  2. Boa noite pessoal, gostaria de saber se alguém tem um código simples, porém funcional de quicksort que possa passar. Obrigado!
  3. @arfneto Tentei, mas não consegui compreender direito a ideia de como implementar no código...
  4. @arfneto Consegui fazer com que o código funcione, fazendo tudo o que eu esperava hahahaahahha. Aqui está o resultado: void ordena (int qntfilmes){ FILE *arquivo = fopen("filmes.txt", "r"); FILE *tmp = fopen ("tmp.txt", "w"); char str [300], temp[300], filmes[qntfilmes][300]; int i, j, cont=0, ret; fgets (str, 300, arquivo); while(!feof(arquivo)){ strcpy(filmes[cont], str); cont++; fgets (str, 300, arquivo); } for (j=0; j<qntfilmes-1; j++){ for (i=j+1; i<qntfilmes; i++){ if (strcmp(filmes[j], filmes[i]) > 0){ strcpy(temp, filmes[j]); strcpy(filmes[j], filmes[i]); strcpy(filmes[i], temp); } } } for (i=0; i<qntfilmes; i++){ fprintf(tmp,"%s", filmes[i]); } fclose(tmp); fclose(arquivo); remove("filmes.txt"); rename("tmp.txt","filmes.txt"); } int contfilmes (int cont){ FILE* arquivo = fopen("filmes.txt", "r"); char c, letra = '\n'; cont=0; while(fread (&c, sizeof(char), 1, arquivo)) { if(c == letra) { cont++; } } fclose(arquivo); return cont; } Não consegui utilizar tudo o que vocês me indicaram para que o código ficasse mais eficiente, mas todos os ditos foram de extrema ajuda, muito obrigado!
  5. @arfneto Sou novato aqui, não sei mexer muito bem ainda, se puder enviar aqui assim que possível eu agradeço de montão. Muito obrigado pelas dicas!
  6. @Lucca Rodrigues@herbertbahia Aaaah saqueii, muito obrigado mesmo!
  7. @Lucca Rodrigues @herbertbahia Sim, porém, eu n posso simplesmente armazenar uma string no arquivo, antes de compara-la com todas as outras strings, pois a partir do momento que eu li a primeira string, a mesma pode ser que seja a última que irá constar. Referente a isso que não sei como proceder, devo criar uma matriz com mais de 3000 linhas para armazenar todas as strings do arquivo, e assim conseguindo comparar uma a uma? Creio que nem haja como ter uma matriz com mais de 3000 linhas. É essa a parte que estou empacado.
  8. @Lucca Rodrigues Obrigado pelo retorno, eu já tinha feito um pouco, mas minha maior dificuldade é na hora de transportar para o arquivo em ordem alfabética void ordena (){ FILE* arquivo = fopen("filmes.txt", "r"); FILE* temp = fopen("temp.txt", "w"); char str[3000]; fgets (str, 3000, arquivo); //lê e armazena na string "str" primeira linha while(!feof(arquivo)){ //identifica EOF (final do arquivo) // Desenvolvimento -> Onde será feito o armazenamento no arquivo "temp.txt" // em ordem alfabética fgets (str, 3000, arquivo); //lê e armazena na string "str" as demais linhas } fclose(arquivo); fclose(tmp); } O arquivo onde consta as strings é o "filmes.txt", a ideia era pegar esses arquivos e ir transferindo todos eles em ordem alfabética para o "temp.txt". Após transferi-los para o "temp.txt", iria renomeá-lo para "filmes.txt" e excluir o arquivo "filmes.txt" inicial. Resumindo minha dúvida principal: Como eu posso pegar todas as strings (presentes no "filmes.txt"), ordena-las em ordem alfabética para transferi-las para um .txt (temp.txt).
  9. Boa noite pessoal! Estou tentando desenvolver um módulo, onde o mesmo ordena várias strings presentes em um arquivo .txt (filmes.txt), como por exemplo: LITTLE MAN TATE,1991,JODIE FOSTER STUCK,2007,STUART GORDON DANGEROUS GROUND,1997,DARRELL ROODT ENIGMA,2001,MICHAEL APTED FLASH GORDON,1980,MIKE HODGES Porém estou tendo dificuldade para fazer isso, são mais de 3000 linhas no arquivo, sendo cada uma delas uma respectiva string. É necessário "retirar" elas do .txt e então, no final do módulo, gravar elas novamente no .txt em ordem alfabética. Agradeço se puderem ajudar, obrigado!
  10. @Davi Silva Santos Está em UTF-8 sim. Mas creio que o problema não está no locale, pois aqui, o "TÍTULO", fica acentuado. Acredito que realmente o problema está nesta parte, onde passasse o conteúdo da string do txt para as variáveis: Mas não tenho ideia de como posso fazer para resolver isso. Exemplo da execução: adicionado 6 minutos depois Aqui está o arquivo txt caso auxilie filmes.txt
  11. Estou tendo que fazer um trabalho para o curso, onde estou tentando desenvolver um sistema de para uma locadora, utilizando um arquivo .txt. Neste arquivo consta: nome do filme, ano de lançamento e o nome do diretor do filme. Onde em alguns há acentuação, mas o printf acaba bugando na hora de printar. No módulo main do programa eu já fiz o setlocale (LC_ALL,"Portuguese_Brazil"). Acredito que o problema esteja no momento em que passo a string do .txt para a variável, mas não tenho certeza. void listafilmes(){ FILE *arquivo; char string[3000], *titulo, *diretor; int ano; arquivo = fopen("filmes.txt", "r"); if (arquivo==NULL){ printf("Erro ao abrir arquivo\n"); getch(); return; } fgets (string, 3000, arquivo); while(!feof(arquivo)){ titulo = strtok(string,","); ano = atoi(strtok(NULL,",")); diretor = strtok(NULL,","); printf("TÍTULO: %s ANO: %d DIRETOR: %s", titulo, ano, diretor); printf("\n"); fgets (string, 3000, arquivo); } fclose(arquivo); } Obrigado!

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!