Ir ao conteúdo
  • Cadastre-se
kika123

Ler um arquivo texto e exiba o conteudo em ordem alfabetica

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai salvando cada caracter em um vetor, depois que terminar de ler o arquivo inteiro você ordena e depois imprime.

  • Curtir 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Citação

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

 

:atirador:

Compartilhar este post


Link para o post
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 ??

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×