PAULO VARGAS Postado Fevereiro 16, 2012 Denunciar Share Postado Fevereiro 16, 2012 (editado) Estou começando em C++ e estou com um problema para resolver um exercício: http://br.spoj.pl/problems/CHAMADA1/Meu problema está em ordenar uma string de nomes. Exemplo: Amanda, Carlos, Miguel e etc.Eu preciso ordenar os nomes em ordem alfabética.Segue abaixo o meu código:#include <iostream> #include <algorithm> using namespace std; int main(){ int n, k; cin>>n; cin>>k; if(k<1 || n>100 || k>n){return 0;} char nomes[n][21]; for(int i=0; i<n; i++){ cin>>nomes[i]; } //FALTANDO ORDENAÇÃO AQUI cout<<nomes[k-1]; } Editado Fevereiro 17, 2012 por Durub Adicionar tags code [kuroi] e remover caps lock [Durub] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Fevereiro 16, 2012 Denunciar Share Postado Fevereiro 16, 2012 (editado) Opa, eu desenvolvi agora aqui, um exemplo em C, sobre ordenação de strings, Espero que te ajude.#include<stdio.h> #include<stdlib.h> #include<string.h> struct dados { char nome[30]; }; int main() { dados vet[100]; int op=0,soma=0,i,j; char temp[30]; while(op!=3){ printf("\n==============MENU==================\n"); printf("1-Cadastrar Pessoa: \n"); printf("2-Ordenar por Nome: \n"); printf("3-Sair\n\n\n"); scanf("%d",&op); if(op==1){ printf("informe nome:"); fflush(stdin); fgets(vet[soma].nome,30,stdin); fflush(stdin); soma ++; system("cls");} if(op==2){ printf("=================================\n"); printf("Ordenando por nome"); //ordena for(i = 1; i < soma; i++){ for (j = 0; j < soma-1; j++){ if(strcmp(vet[j].nome,vet[j+1].nome) > 0){ strcpy(temp,vet[j].nome); strcpy(vet[j].nome,vet[j+1].nome); strcpy(vet[j+1].nome,temp);} } } //imprime for(i=0;i<soma;i++){ printf("\n"); printf("nome = %s\n",vet[i].nome);}} if(op==3){ printf("Encerrando Programa...\n"); system("pause"); exit(0);} }// fim while }// fim main1) Criei uma struct(estruturas);2) Declarei uma variavel do tipo dados vet[100]( é um vetor para armazenar até 100 nomes), e criei uma variável auxiliar chamada soma, que irá contar quantos nomes seu vetor possui até o momento.3) A ordenação, utilizei dois "for", laço de repetição, onde tem dois índices "i" e "j", que compara sempre o nome "atual", com o próximo, até onde o vetor está preenchido(com a variavel soma), pois vamos supor que voce tem 3 registros apenas dentro do vetor, os laços de repetição irão de 0 até 3, e não até o final totalda sua capacidade(100). E uma maneira de otimizar seu código e deixá-lo mais leve.4) Existem outras maneiras de ordenação de strings na internet: Radix sort, Bubble sort, etc..Qualquer dúvida, poste ai!. Editado Fevereiro 16, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
PAULO VARGAS
Estou começando em C++ e estou com um problema para resolver um exercício: http://br.spoj.pl/problems/CHAMADA1/
Meu problema está em ordenar uma string de nomes. Exemplo: Amanda, Carlos, Miguel e etc.
Eu preciso ordenar os nomes em ordem alfabética.
Segue abaixo o meu código:
Editado por DurubAdicionar tags code [kuroi] e remover caps lock [Durub]
Link para o comentário
Compartilhar em outros sites
1 resposta 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.