Ir ao conteúdo
  • Cadastre-se

Ler um arquivo texto e exiba o conteudo em ordem alfabetica


kika123

Posts recomendados

Ola boa noite! 

 

preciso de um algoritmo que leia um arquivo texto e exiba na tela todos os caracteres do arquivo em ordem alfabetica, ate a parte que abre e lê  arquivo eu consegui não consigo ordenar em ordem alfabética alguém pode ajudar???

 

#include <stdio.h>
main()
{
FILE *arquivo;
char c;
char nome [41];
// Pergunta o nome do arquivo
printf ("Nome do arquivo: ");
scanf (" %40[^\n]",nome);
// Abre o arquivo para leitura
arquivo = fopen (nome, "r");
// Lê caracteres até o fim do arquivo
c = getc(arquivo);
while(c != EOF){
printf("%c", c);
c = getc(arquivo);
}
// Fecha o arquivo
fclose (arquivo);
}

falta eu conseguir exibir em ordem alfabética ordem alfabética.  alguem poderia ajudar?

Link para o comentário
Compartilhar em outros sites

Se a intenção é mostrar as letras organizadas você pode muito bem usar um contador >_<. você da uma passada por todo o arquivo e vai contando as letras, tipo cada letra 'a' vet[0]++, depois a cada letra 'b' vet[1]++. Ao terminar você imprime x vezes a letra 'a', depois x vezes a letra 'b' e assim por diante usando o contador. >_<

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vangodp só iniciante poderia me ajudar a organizar o código com o contador abaixo? 

 

 

#include <stdio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{
FILE *arquivo;
char c;
char nome [41];
char letras[]="abcdefghijklmnopqrstuvwxyz";
int contador,x,y;
char frase[30];
char frase_v[30];

// Pergunta o nome do arquivo
printf ("Nome do arquivo: ");
scanf (" %40[^\n]",nome);
// Abre o arquivo para leitura
arquivo = fopen (nome, "r");
// Lê caracteres até o fim do arquivo
contador=0;
    for (x=0;x<=strlen(frase);x++)
        for (y=0;y<=strlen(letras);y++)
            if (frase[x]==letras[y] && frase[x]!=0) frase_v[contador++]=frase[x];
    frase_v[++contador]=0;
c = getc(arquivo);
while(c != EOF){
printf("%c", c);
for(x=0;x<=strlen(frase_v);x++) cout << frase_v[x];
c = getc(arquivo);
}




// Fecha o arquivo
fclose (arquivo);
}

 

Link para o comentário
Compartilhar em outros sites

54 minutos atrás, vangodp disse:

Obrigado mesmo assim pelo quê? Eu falei que não entendi nada do que você colocou aqui:
 

 

:atirador:

Que sou inciante em programação , que eu tentei mudar o código usando um contador, se poderia me ajudar a corrigido o que fiz de errado no código ??

Link para o comentário
Compartilhar em outros sites

Ele quis dizer algo como criar um vetor de inteiro de 24 posições (Acho que tem 24 letras no alfabeto né?);

Zerar todas as posições;

Considerar cada posição como uma letra, por exemplo a posição 0 seria a letra 'a', enquanto a posição 23 seria a letra 'z';

Cada vez que você lê a letra soma um na posição correspondente no vetor;

Citação

int letras[24]; //Zerar todas as 24 posições

//Agora dentro do ciclo de leitura do arquivo

c = getc(arquivo);

if(c>=97 && c<= 122)  //o numero 97 corresponde a letra 'a' e o 122 a letra 'z', se for colocar letras maiusculas você só precisa fazer algumas alterações

    letras[c-97]++;  //c - 97 para ficar no intervalo correto, por exemplo, caso a letra seja 'b' o inteiro correspondente é 98, 98 - 97 = 1, ou seja, vai ser aumentado em 1 na posição 1 do vetor;

//Agora já fora do ciclo de leitura

//Basta imprimir todas as 24 posições do vetor;

Eu acredito que isso funcione;

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!