Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenar Palavra Em Ordem Alfabética?


Tamanini

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

Primeira coisa, você deve levar em consideração que em C e C++ uma string nada mais é do que um vetor de caracteres.

Portanto se você souber ordenar um vetor através de algum método de ordenação isso poderá ser aplicado a sua string.

Se você não sabe nenhum método de ordenação é uma boa dar uma olhada em:

http://pt.wikipedia.org/wiki/Algoritmos_de...na%C3%A7%C3%A3o

lá existe vários algoritmos, sendo que os mais fávocês de entender são provavelmente o Bubble Sort e o Insertion Sort.

Nesse tópico, lá no final eu expliquei como ordenar usando o qsort que já vem na stdlib:

http://scriptbrasil.com.br/forum/index.php?showtopic=100595

Mas é possivelmente um pouco confuso. Mas a idéia neste tópico também é ordenar um sequência de caracteres, igual o que você quer.

Link para o comentário
Compartilhar em outros sites

  • 0

olha só você pode fazer dessa forma.

#include <iostream>
using namespace std;
 int main()
{
    char str[20] = "Algoritmo";
    cout<<"A string e: "<<str;
    str[3] ='i';// str[3] conta e troca a letra na  terceira da palavra,
                       //mas você está vendo que é quarta que mudou então,procure a causa.
    str[4] ='m';
    e aí continua pondo as letras referentes;
     saída do programa ordenando o desejado ao output;
     pausa para ele não fechar antes de ser executado;
     termina  programa retornando;
}

Eu acho que é isso,está praticamente pronto,posta o que você conseguiu,rss

Editado por Bolt 4
Link para o comentário
Compartilhar em outros sites

  • 0

Uma outra opção que me ocorreu agora é ordenação por contagem:

faça um vetor de tamanho 128, deixei tudo como zero (lembre-se que o C não faz isso pra você).

Agora percorra a string e para cada caracter encontrado adicione um na posição relativa desse caracter no vetor.

Ou seja, o a vai na posição 97, o b na posição 98 etc. A forma mais fácil de fazer isso é acessar o vetor indexado pelo caracter, algo do tipo:

vetor[string[i]]++;
onde i é a variável que você usa para percorrer sua string. Isto te dará um histograma dos caracteres. Agora basta percorrer o vetor, e imprimir cada caracter para o qual exista um valor diferente de zero essa n vezes, algo assim:
for(i = 0; i < 128; i++)
{
  for(j = vetor[i]; j >= 0; j--)
  {
      printf("%c",i);
  }
}
printf("\n");

Alguns detalhes: Isso não funciona para caracters acentuados, você precisaria de um unsigned char, um vetor de 256 e fazer a leitura corretamente.

Se você souber que são apenas letras, você pode diminuir o tamanho do vetor, mas precisará fazer algumas contas para acessar a posição corretamente.

Esta é a forma mais rápida que existe de ordenação, pois olha só uma vez para cada elemento.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...