Ir ao conteúdo
  • Cadastre-se

ORDENAÇÃO DE VETOR E BUSCA BINÁRIA


Felipeduarte13

Posts recomendados

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

int num;

  int inf,sup,meio;

int i, j, m, num_atual; 

int num_vet[15];

int k;

 

printf("DIGITE OS 15 NUMEROS:\n\n");

k=0;

while(k<15){

scanf("%d", &num_vet[k]);

k++;

}

for(i = 1; i < 15; i++)

{

num_atual = num_vet;  

 

j = i - 1; 

 

while((j >= 0) && (num_atual < num_vet[j]))

{

num_vet[j+1] = num_vet[j]; 

 

j--; 

}

 

num_vet[j+1] = num_atual;

}

printf("VETOR ORDENADO:\n\n");

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

printf("%d ", num_vet);

printf("\n\n");

 

inf=0;

  sup=14;

  printf("\nDIGITE UM NUMERO:\n\n");

scanf("%d",  &num);

 

for(m=0;m<15;m++);

if(num==num_vet[m]){

       while (inf<=sup){

              meio=(inf+sup)/2;

              if (num==num_vet[meio]){

                 printf("\nO NUMERO %d FOI ENCONTRADO NO VETOR E ESTA NA POSICAO: %d\n",num_vet[meio],meio);

                 break;}

                 else if (num<num_vet[meio])

                 sup=meio-1;

          else

                 inf=meio+1;}

}else printf("o numero digitado não está no vetor");

}

 

 

OBS: NÃO ESTOU CONSEGUINDO TERMINAR O CÓDIGO. QUANDO DIGITO UM NUMERO QUE NÃO ESTÁ NO VETOR, NÃO APARECE A MENSAGEM QUE EU QUERO QUE APAREÇA. ESSA DAQUI:  "else printf("o numero digitado não está no vetor");"

Link para o comentário
Compartilhar em outros sites

a estrutura for:m

que realiza a busca esta com ponto-virgula ( ; ) no final, neutralizando o if.

else também precisa de uma correção, ficando dentro de um bloco, junto do break; para finalizar a busca.

Veja abaixo:

#include <stdio.h>#include <stdlib.h>int main(){    int num;    int inf,sup,meio;    int i, j, m, num_atual;    int num_vet[15];    int k;    printf("DIGITE OS 15 NUMEROS:\n\n");    k=0;    while(k<15) {        scanf("%d", &num_vet[k]);        k++;    }    for(i = 1; i < 15; i++) {        num_atual = num_vet[i];        j = i - 1;        while((j >= 0) && (num_atual < num_vet[j])) {            num_vet[j+1] = num_vet[j];            j--;        }        num_vet[j+1] = num_atual;    }    printf("VETOR ORDENADO:\n\n");    for(i = 0; i < 15; i++)        printf("%d ", num_vet[i]);    printf("\n\n");    inf=0;    sup=14;    printf("\nDIGITE UM NUMERO:\n\n");    scanf("%d",  &num);    for(m=0; m<15; m++) //<- tinhas dois pontos aqui;    if(num==num_vet[m]) {        while (inf<=sup) {            meio=(inf+sup)/2;            if (num==num_vet[meio]) {                printf("\nO NUMERO %d FOI ENCONTRADO NO VETOR E ESTA NA POSICAO: %d\n",num_vet[meio],meio);                break;            } else if (num<num_vet[meio])                sup=meio-1;            else                inf=meio+1;        }    } else { //<- else estava sem bloco        printf("o numero digitado nao esta no vetor");        break;    }    return(0);} 
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...