Tamanini Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 Esse exercício não tenho nenhuma idéia de como poderia fazer.No caso o usuário irá digitar uma palavra, por exemplo: "Algoritmo"E o resultado terá que ser:"Agilmoort" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Schouery (VidaGeek) Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 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%A3olá 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=100595Mas é possivelmente um pouco confuso. Mas a idéia neste tópico também é ordenar um sequência de caracteres, igual o que você quer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Bolt 4 Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 (editado) 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 Abril 27, 2007 por Bolt 4 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Schouery (VidaGeek) Postado Abril 28, 2007 Denunciar Share Postado Abril 28, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Tamanini
Esse exercício não tenho nenhuma idéia de como poderia fazer.
No caso o usuário irá digitar uma palavra, por exemplo: "Algoritmo"
E o resultado terá que ser:
"Agilmoort"
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.