Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eMineiro

Ordenar Matriz de Strings

Recommended Posts

E ai galera , estou fazendo um trabalho em C e to com dificuldade de pegar a matriz com strings(TODAS COM CHARS MAISCULOS) e ordena-las alfabeticamente, alguem pode me ajudar??

 

De preferencia sem usar ponteiros ... vlw

 

exemplo.:

 

m = [['A','S','A'],['Q','U','E','I','J','O'],['A','M','O','R']]

ficaria

 

m = [['A','M','O','R']['A','S','A'],['Q','U','E','I','J','O']]

 

 

 

pllzz me ajudem

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia é:

 

Pegue a primeira letra de cada string e as compare com números mesmo. Ex:

Teste isso:

 

if ('A' < 'B')
   printf("A eh menor que B");
else
   printf("B eh maior que A");

Na tabela ASCII B é maior que A e C é maior que B, assim por diante.

 

Pense nisso e tente resolver seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz uma função para comparar 2 strings veja soh:

 

 

int CompararString(char string1[TAM], char string2[TAM]){
	int i,x,y,menor;
	x = strlen(string1);
	y = strlen(string2);
	i = 0;
	if (x < y){
		  menor = x;
	}else{
		  menor = y;
	}
	while (i < (menor)){
		  if (string1[i]<string2[i]){
				 return 1;
		  }
		  if (string2[i]<string1[i]){
				 return 0;
		  }
		  i = i++;
	}
// No caso de palavras como Amor e Amora , faz o seguinte:
	if (menor == x){
		 return 1;
	}else{
		return 0;
	}
}

No caso ela vai pegar 2 strings e comparar letra por letra , exemplo palavras Amor e Amora

Vai comparar 4 vezes --> A com A , M com M , O com O , R com R e vai sair do while , saindo do while a função ve qual palavra tem tamanho menor.

 

Retorna 1 a string1 for a menor de ordem alfabetica e 0 se a string2 for a menor de ordem alfabetica.

Só que parece que ele nao ta conseguindo comparar os chars das strings , ta certo isso ai que eu fiz??

Compartilhar este post


Link para o post
Compartilhar em outros sites

PROBLEMA RESOLVIDO, o problema mesmo era VISAO aheuaheaue eu coloquei 1 ao inves de i nessa linha de código

if (string2[i]<string1[1]){

Sendo que na verdade eh pra ser assim

 

if (string2[i]<string1[i]){

Ja esta editado ali em cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.