Ir ao conteúdo
  • Cadastre-se

Algoritmo para ordenar por nome [error]


robersoncomputer

Posts recomendados

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;

}

Link para o comentário
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!

-

Link para o comentário
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 é ?
Link para o comentário
Compartilhar em outros sites

Arquivado

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

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...