robersoncomputer

Algoritmo para ordenar por nome [error]

5 posts neste tópico

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);

}

bolha(5, nomes);

printf(" Vetor Ordenado \n ");

//apresenta os elementos

for(i=0; i<5; i++)

printf("%c", nomes);

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);

printf("\n");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...

char nomes[5];

(...)

scanf("%c", nomes);

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);

Cuidado com o '\n' de cada entrada!

-

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 é ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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