PAULO VARGAS Posted February 16, 2012 Report Share Posted February 16, 2012 (edited) 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]; } Edited February 17, 2012 by Durub Adicionar tags code [kuroi] e remover caps lock [Durub] Quote Link to comment Share on other sites More sharing options...
0 Binder Posted February 16, 2012 Report Share Posted February 16, 2012 (edited) 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!. Edited February 16, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
Question
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:
Edited by DurubAdicionar tags code [kuroi] e remover caps lock [Durub]
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.