Ir ao conteúdo
  • Cadastre-se

C Ordenar nome em C


AnaTrinity

Posts recomendados

#include <stdio.h>
#include <string.h>

int main(){
    int N, i;
    scanf("%d", &N);
    getchar();
    char nomes[N][11];
    for(i=0;i<N;i++){
		scanf("%[^\n]s",nomes[i]);
		getchar();
	}
	for(i=0;i<N;i++){
		printf("%s\n",nomes[i]);
	}
	return 0;
}

Boa tarde pessoal!! preciso criar um programa que dada uma lista de N nomes (apenas nomes simples com no máximo 10 caracteres, sem espaço) verifique e imprima qual seria o primeiro em ordem alfabética.Isso foi o que eu fiz até agora, não sei como faz para ordenar. Obrigado!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Para ordenar, você precisa verificar as letras de um nome selecionados em um loop com as letras dos outros nomes e enviar elas para um vetor secundário.

Exemplo de entrada:


'Mario'
'Iara'
'Luana'
'Marcos'

Na teoria, funcionaria assim:

Lista atual:
'Mario'
'Iara'
'Luana'
'Marcos'


Mario -> M > I  -> Iara Sobe
Continua buscas até a ultimo nome...

Lista atual:
'Iara'
'Mario'
'Luana'
'Marcos'


Mario -> M > L   -> Luana Sobe

Lista atual:
'Iara'
'Luana'
'Mario'
'Marcos'

Mario -> M == M  -> letra++
Mario -> a == a  -> letra++
Mario -> r == r  -> letra++
Mario -> i > c   -> Mario sobre

Com a lista atualizada...
Zerar loop se houve mudanças..usando flag
Ou então ir para proxima palavra...

Lembre-se que a é diferente de A. então use toupper ou tolower

E a é equivalente a um valor numérico da tabela ASCII, então, se você comparar 'a' com 'z':    a < z

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@AnaTrinity     para ordenar nomes é igual ordenar números , pois cada letra tem um valor numérico,   então você pode usar o método bubllesort ,  mas os nomes serão ordenados pela primeira letra e que seja todos os nomes em letras minúsculas  ou todos os nomes com letras maiúsculas,  se você misturar maiúsculas com minúsculas a ordenação não dará certo. então seu código com algumas modificações ficaria assim :

#include <stdio.h>
#include <string.h>

int main(){
    int N,j,i;
    char aux[11];
    printf("digite a quantidade de nomes ");
    scanf("%d", &N);
    getchar();
    char nomes[N][11];
    for(i=0;i<N;i++){
        printf("digite o %d nome ",i+1);
		scanf("%[^\n]s",nomes[i]);
		getchar();
	}
	printf("\naqui estão os nomes na ordem digitados\n");
	for(i=0;i<N;i++){
		printf("%s\n",nomes[i]);
	}
	for(i=0;i<N;i++){
        for(j=i+1;j<N;j++){
            if( nomes[i][0]>nomes[j][0]){
                strcpy(aux,nomes[i]);
                strcpy(nomes[i],nomes[j]);
                strcpy(nomes[j],aux);
            }
        }
	}
	printf("\naqui os nomes em ordem crescente\n");
	for(i=0;i<N;i++){
		printf("%s\n",nomes[i]);
	}
	return 0;
}

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@devair1010 muito obrigado, isso vai me ajudar bastante em outros exercícios !! mas como eu faria para exibir apenas o primeiro nome da ordem alfabética? 

 

ex.:

recebe: Zé

             Maria

             Paula

             Bruna

             Thaís

 

exibe: Bruna (pois entre os nomes digitados, é o primeiro da ordem alfabética)

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Acho que para esse exercício não precisa ordenar, basta usar o conceito de "menor" tradicional. Algo como "inicializar o menor como sendo o primeiro. Ai verifica um a um os próximos, se for menor que o menor, atualiza. No final, menor vai está com o menor nome."

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!