Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

Ordenação por inserção binária

Recommended Posts

Tentei aqui e diz q no segundo for da função o i não está declarado

 

#include <stdio.h>
#include <stdlib.h>

void insercao_binaria(int v[], int tam){
     int i,k,x,L,R,m;
     for(i=2;i<=tam;i++){
               x = v[i];
               L = 1;
               R = i;
               while(L<R){
                     m = (L+R) / 2;
                     if(v[m] <= x)
                             L = m + 1;
                     else
                             R = m;
                         }
     for(j=i;j>R;j++)
             v[j] = v[j-1];
     v[R] = x;
                  }     
}

int main()
{
  int v[] = {5,3,1,4,7};
  int k;
  insercao_binaria(v,5);
  for(k=0;k<5;k++)
           printf("v[%d]    %d \n",(k+1),v[k]);
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

int j;

A sim, obrigado. Agora aparece a seguinte mensagem de erro:

Permission denied

Id return 1 exit status

 

#include <stdio.h>
#include <stdlib.h>

void insercao_binaria(int v[], int tam){
     int i,j,x,L,R,m;
     for(i=2;i<=tam;i++){
               x = v[i];
               L = 1;
               R = i;
               while(L<R){
                     m = (L+R) / 2;
                     if(v[m] <= x)
                             L = m + 1;
                     else
                             R = m;
                         }
     for(j=i;j>R;j++)
             v[j] = v[j-1];
     v[R] = x;
                  }     
}

int main()
{
  int v[] = {5,3,1,4,7};
  int k;
  insercao_binaria(v,5);
  for(k=0;k<5;k++)
           printf("v[%d]    %d \n",(k+1),v[k]);
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a variável não está declarada, declare. Não poste o código inteiro por causa de erro que pode ser resolvido lendo e interpretando as mensagens do compilador. Seu código dá falha de segmentação. Veja as condições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a variável não está declarada, declare. Não poste o código inteiro por causa de erro que pode ser resolvido lendo e interpretando as mensagens do compilador. Seu código dá falha de segmentação. Veja as condições.

 

Agora as variaveis estão declaradas. Se o erro que aparece, agora, não diz em q parte especifíca é do programa como não vo postar o programa inteiro

Compartilhar este post


Link para o post
Compartilhar em outros sites
Se o erro que aparece, agora, não diz em q parte especifíca é do programa como não vo postar o programa inteiro
Se não informa a linha do erro, a IDE não presta. Troque.

 

Esse tipo de coisa é detectável com leitura atenta do código. Simples assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se está dando falha de segmentação, alguma coisa não está certa e normalmente são as condições de acesso à memória. Se eu não me engano, não é a primeira vez que você tem esse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente perceber o pq esta acontecendo isso:

     for(j=i;j>R;j++){
             printf("%d..\n",j);
             v[j] = v[j-1]; }

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente perceber o pq esta acontecendo isso:

     for(j=i;j>R;j++){
             printf("%d..\n",j);
             v[j] = v[j-1]; }

[]s

 

Mais não tem esse código, que você colocou, no programa. Se for este, não entendi o que está errado

 

for(j=i;j>R;j++)
             v[j] = v[j-1];
     v[R] = x;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe essa parte no código que você postou... Os códigos dos links funcionam. Logo, o código errado é o teu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe essa parte no código que você postou... Os códigos dos links funcionam. Logo, o código errado é o teu.

 

 

Qual parte do código está errada ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute o código e descubra. Pra isso serve debugger.

Além disso você já sabe o que acontece no loop. 1+1 = ?

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.