Os métodos de ordenação sistemática são os mais variados, e dessa vez surgiu a ideia de fazer uma ordenação do estilo “AaBbCcDdEeFf…Zz”. Duas principais maneiras são usar posições de vetores como índice, ou simplesmente usar a tabela ASCII, o que por sua vez não é muito seguro uma vez que não sabemos em que sistema o programa irá rodar.
O seguinte exemplo utiliza a tabela ASCII.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> void TrocaLetras(char palavra[],int pos1, int pos2) { char aux; aux = palavra[pos1]; palavra[pos1] = palavra[pos2]; palavra[pos2] = aux; } int MedeTamanho(char palavra[]) { int i = 0;; while (palavra[i]) i++; return i; } void OrdenaPalavra(char palavra[],int n) { int i, j, menor, auxj, auxmenor; for (i = 0; i < n-1; i++) { menor = i; for (j = i+1; j < n; j++) { if (palavra[j] >= 97) auxj = -32; else auxj = 0; if (palavra[menor] >= 97) auxmenor = -32; else auxmenor = 0; if (palavra[j]+auxj == palavra[menor]+auxmenor) { if (auxj < 0) auxj = 1; else auxmenor = 1; } if (palavra[j]+auxj < palavra[menor]+auxmenor) menor=j; } TrocaLetras(palavra,i,menor); } } int main() { int tamanho; char palavra[100]; printf("Entre com uma palavra: "); scanf("%s",palavra); tamanho = MedeTamanho(palavra); OrdenaPalavra(palavra,tamanho); printf("%s\n",palavra); return 0; } |
E este daqui utiliza-se de um vetor com ordem.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> #define MAX 100 void VerificaOrdem(char string[], char ordem[], int i) { int j; for (j=0; string[j] != '\n'; j++) if (string[j] == ordem[i]) printf("%c", ordem[i]); } int main() { char string[MAX]; char ordem[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; int i; printf("Digite a string:\n"); fgets(string, MAX, stdin); printf("\nString ordenada:\n"); for (i=0; i<52; i++) VerificaOrdem(string, ordem, i); printf("\n"); return 0; } |
Artigos Relacionados
- Montando uma Agenda em C: Ordenação de Strings, Vetor de Structs e Alocação Dinâmica
- Substituição de Trechos em Strings com C
- Combinando Algoritmos de Ordenação - Selection Sort e Merge Sort
- Problema das Probabilidades de Coincidência de Aniversários
- Pegando mensagens de vários usuários do Twitter com PHP