Ir para conteúdo

  • Entrar usando o Facebook Entrar usando o Twitter Entrar usando o Windows Live Login com Steam Login com Google      Entrar   
  • Cadastre-se

Foto
- - - - -

Algoritmo para ordenar por nome [error]

algoritmo dúvidas error lógica ordenar

  • Por favor, faça o login para responder
4 respostas neste tópico

#1 robersoncomputer

robersoncomputer

    Usuário Júnior

  • Membros Plenos
  • PipPip
  • 203 posts
  • Membro desde 28/04/2010
1
Neutra
  • Colider MT

Postado 27 de abril de 2012 - 15h50min

boa tarde galera, olha ja tentei de todas as formas, mas nao sei qual é o erro, se puderem me orientar qual e o meu erro. seguinte ele compila beleza, na hora qu pede para digitar o primeiro nome, eu escrevo e a hora que dou enter para ele pedir par digitar o proximo da o erro e no erro fala para enviar relatório e nao enviar abaixo segue o codigo, o engraçado que o de numeros da beleza veja:

/*a funçao recebe como parmetro um determinado numero de elemento "char* e o
ponteiro do primeiro elemento do vetor qeu deseja ordenar*/
void bolha (int n, char* nomes)
{
int i,j;


for(i= n-1; i>1; i--)
for(j=0; j<i; j++)

if(nomes[j] > nomes[j+1]) /* troca*/
{
int aux = nomes[j];//se for maior, aux armazena este valor maior
nomes[j] = nomes[j+1];
nomes[j+1] = aux;



}


}

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

char main(void)
{


char nomes[5]; //= {'joao', 'maria', 'ana', 'fabiana', 'bruna'};
int i;

//emtrada de dados
for (i=0; i<5; i++)
{

printf("entre com um nome: ");
scanf("%c", nomes[i]);
}

bolha(5, nomes);
printf(" Vetor Ordenado \n ");

//apresenta os elementos
for(i=0; i<5; i++)
printf("%c", nomes[i]);
printf("\n");



// return 0;
}


void bolha (char n, int* nomes)
{
int i,j;
for(i= n-1; i>1; i--)
for(j=0; j<i; j++)

if(nomes[j] > nomes[j+1]) /* troca*/
{
char aux = nomes[j];//se for maior, aux armazena este valor maior
nomes[j] = nomes[j+1];
nomes[j+1] = aux;



}
}

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

int main(void)
{
int nomes[5] = {5, 10, 2, 1, 3};
int i;


bolha(5, nomes);
printf(" Vetor Ordenado \n ");

for(i=0; i<5; i++)
printf("\n%d \n", nomes[i]);
printf("\n");

return 0;
}




#2 L30N4RD0

L30N4RD0

    Usuário Júnior

  • Membros Plenos
  • PipPip
  • 216 posts
  • Membro desde 31/01/2008
2
Neutra
  • Nova Iguaçu rj

Postado 01 de maio de 2012 - 20h13min

ppara comparar string se usa a funçao strcmp da biblioteca string.h

strcmp(string1,string2)==0 se forem iguais
>0 se a primeira for maior que a segunda nesse caso precisaria ser ordenada
<0 se a primeira for menor que a segunda aqui ela estaria ordenada


#3 robersoncomputer

robersoncomputer

    Usuário Júnior

  • Membros Plenos
  • PipPip
  • 203 posts
  • Membro desde 28/04/2010
1
Neutra
  • Colider MT

Postado 04 de maio de 2012 - 23h51min

L30N4RD0 obrigado pela resposta, vou tentar aqui arrumar... ok quando eu conseguir volto aqui e coloco como resolvido. Abs


#4 SharaMoustache

SharaMoustache

    Usuário Presente

  • Membros Plenos
  • PipPipPip
  • 701 posts
  • Membro desde 27/03/2011
52
Excepcional
  • Brasília

Postado 05 de maio de 2012 - 06h05min

Cara...

char nomes[5];
(...)
scanf("%c", nomes[i]);


Se você quer ler nomes usando a declaração "char nomes[5];" Os nomes só poderão ter 4 caracteres pois o 5º é usado para o '\0' que indica o fim da string.
E você sempre iria sobreescrever os valores a cada nova leitura, ou seja, "nomes" teria sempre um nome só.

Se você quer 5 nomes de no máximo 10 caracteres(por exemplo), você tem de declarar assim:
char nomes[5][11];

E como você quer ler um nome inteiro, pegando apenas um caractere?
Strings são lidas com %s!
scanf("%s", nomes[i]);

Cuidado com o '\n' de cada entrada!

-

Conheça suas funções!
http://www.cplusplus.com/reference/
-
Utilize as tags CODE!!! Aprenda: clique aqui

#5 robersoncomputer

robersoncomputer

    Usuário Júnior

  • Membros Plenos
  • PipPip
  • 203 posts
  • Membro desde 28/04/2010
1
Neutra
  • Colider MT

Postado 07 de maio de 2012 - 16h14min

Obrigado SharaMoustache queria manja assim como tu, poh a tempos tendo não aprendo, na hora da pratica sempre embanano, não sei por onde vai como fazer. Bom assim que me sobrar um tempo eu vou mexe no código ok grato pela reposta e logo retornarei ....

Alias essa questão em um vetor que fico na dúvida

char nomes[5][11] // sempre //tenho dúvida em relação ao que o primeiro [] faz e para que o segundo [] serve é a //mesma coisa para números. Se o 1º [] serve para eu ter 5 nomes, o 2º serve para a //quantia de palavras que quero por exemplo [20] caracteres e se for inteiro como é ?







Tópicos que também usam as tags algoritmo, dúvidas, error, lógica, ordenar:

0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos