Ir para conteúdo
Fórum Script Brasil
  • 0

Como Ordenar Uma Lista


Guest Um dia eu aprendo

Pergunta

Guest Um dia eu aprendo

tenho grandes dificuldades um C ,tenho que fazer um programa em que tenho que fazer um lista ordenada e sem repetição não consegui sair nem do inserir.por favor me ajude se poder.falou

int inserir(int numero)
{
int i;
if(contador==0)
lista[contador++]=numero;
else
for(i=0;i<contador;i++)
{
if(lista[i]==numero)
printf("não pode haver repeticao");
else
if(lista[i]<numero)
{
lista[i]=numero;
contador++;
}
else
lista[i]=numero;
contador++;
}
}[/codebox]

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest Um dia eu aprendo

è uma lista de tamanho fixo em 100 elementos, mais esse reorganizar que você disse seria colocar tudo na lista e depois ordenar, eu já tentei isso mais o professo quer que já seja colocado em ordem . tipo se estive vazio insere direto . se maior teste se menor teste .

Link para o comentário
Compartilhar em outros sites

  • 0

Se for assim a sua lista não pode ser um simples vetor de inteiros. Você vai ter que criar uma estrutura na qual você vai guardar o valor e a posição do próximo item. Dessa maneira quando um item tiver que entrar entre outros dois você na verdade vai jogar ele no final e refazer as ligações (de forma que o anterior aponte para o recém-adicionado e este aponte para o próximo).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Um dia eu aprendo

Eu refiz o codigo , mais ele continua com alguma coisa e faltando que eu não consigo enc

int inserir(int numero)
{
int i,h,pos;

if((contador==TAM)||(pertence(numero,&pos)))
return false;
if(contador==0)
lista[contador++]=numero;
else
for(i=0;lista[i]<numero;i++)
{
//if()
contador++;
for(h=i;h>=i;h++)
{
lista[h+1]=lista[h];
lista[i]=numero;
}
return true;
}
}
[/codebox]

Link para o comentário
Compartilhar em outros sites

  • 0

o erro de se script está aqui:

for(h=i;h>=i;h++) //primeira vez que entrar i=0 e h=i ou seja h=0; execute o loop enquanto h maior ou igual a i; incrementa h

ou seja, voce entrou num loop infinito.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...