Ir para conteúdo

POWERED BY:

Arquivado

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

alex_dino

[Resolvido] Método Bolha

Recommended Posts

O exrecicio é: Listar em ordem crescente os nomes dos alunos do curso de Sistemas de Informação

que estão armazenados em um vetor. Utilizar o método da bolha.

 

 

 

 

Eu fiz assim, mais está dando erro.

# define TAMANHO 5
#include <stdio.h>
int main (void)
{
	char nomes[TAMANHO][10],i=0,j,aux,cont;
	
	for (cont=0;cont<TAMANHO;cont++){
		 printf ("digite o nome\n ");
		 gets (nomes[cont]);
	}
	for (i=0;i<TAMANHO;i++)
		for (j=i+1;j<TAMANHO;j++){
			 if (strlen(nomes[i]>nomes[j]))
				 aux =nomes[i];
			   	  nomes[i]=nomes[j];
			   	  nomes[j]=aux;
		}
	printf ("crescente %s",nomes[j]);
	system ("pause");
	return (0);
}

O certo não era usar > ou o = né????????? o que eu usaria para trocar???????? Ou o programa está todo errado??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara naum testei + nunca vi isso:

if (strlen(nomes[i]>nomes[j]))

faca assim:

if (strlen(nomes[i]) > strlen(nomes[j])))

e outra coisa como [e ordenar por nomes assim, procure sobre strcoll

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra,

 

para fazer o método bolha, tente deste jeito, acredito que vai te ajudar.

 

# include <stdio.h>
# include <conio.h>

int a[5],i,j,aux;
main(){

for (i=0;i<5;i++){
printf("Informe o %d%c numero:", i+1, 167);
scanf ("%d",& a[i]);
}

// Inserindo dados para o método bolha 

for(i=0;i<4;i++){
for(j=0;j<(4-i);j++){
if (a[j]>a[j+1]){
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}

// Finalizando o método bolha ja com os dados finalizados 

printf("valores modificados pelo metodo bolha");	
for (i=0;i<5;i++){

printf("\n%d\n", a[i]);	
}
getch();
}

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se usaria neste caso strcmp?

No caso de ordenar nomes, acho melhor o strcoll, tente fazer os testes para você ver...

eu conheci esse comando, fazendo um desafio do site do SPOJ onde eu ordenava nomes, e soh consegui ordenar corretamente usando ele.. nunca testei c o qsort ordena nomes tbm..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal esse strcoll mas eu tinha feito um codigo parecido sem usar esta funções de strcmp ou strcoll e funcionou normal

 

 

#include <stdio.h>
#define MAX 10
main(){
 int i, j;
 char aux[50], nome[MAX][50];
 
 for(i = 0; i < MAX; i++){
	   printf("Informe um nome: ");
	   scanf("%s", &nome[i]); 
 }
 for(i = 0; i < MAX; i++){
	   for(j = i + 1; j < MAX; j++){
			 if (nome[i][0] > nome[j][0]){ 
				strcpy(aux, nome[i]);
				strcpy(nome[i], nome[j]);
				strcpy(nome[j], aux);
			 }  
	   }	
 }
 for(i = 0; i < MAX; i++){
	   printf("%s,", nome[i]);	
 }
 printf("\n\n");
 system("pause");   
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você fez bastantes testes??

sera q ordena algo como??

aaaa
bbbb
aaab
aaaab
aaac
axaaa
abababa
teste1
teste2
teste3

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

você fez bastantes testes??

sera q ordena algo como??

aaaa
bbbb
aaab
aaaab
aaac
axaaa
abababa
teste1
teste2
teste3

[]s

Nem vou precisar hehe, já deu pra ver a burrada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

for(i = 0; i < MAX; i++){
	   for(j = i + 1; j < MAX; j++){
			 checar = strcoll(nome[i], nome[j]);
			 if (checar > 0){
				strcpy(aux, nome[i]);
				strcpy(nome[i], nome[j]);
				strcpy(nome[j], aux);
			 }
	   }   
}

Obrigado hehee

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.