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

Busca em Arrays[Resolvido]


waguim

Pergunta

Boa tarde!

Faço facul de computação

o professor ta passando tecnicas de programacao esse semestre.

ele passo pra gente ele pseudo codigo pra busca em array:

Algoritmo trivial: busca sequencial

proc buscasequencial (v, n, A[0..n-1]) {

achei ¬ falso

i ¬ 0

enquanto i < n e não achei fazer {

se A = v então achei ¬ verdadeiro

senão i ¬ i + 1

}

se achei então reportar (i) senão reportar(-1)

}

Mas na hora de implementar ele em C, não me dei muito Bem :D

consegui isso, mas não ta complilando., uso o Dev C++ Se alguém tiver uma dica....fico grato, t+

#include<conio.h>
#include<stdio.h>
int buscasequencial();
main(){
    int a[10]={0,1,20,3,4,5,6,7,8,9},achei,i,n=10,v;
    printf("Digite o valor a ser buscado: ");
    scanf("%d",&v);
    printf("o valor esta na posicao: %d", buscasequencial(v));
    
getche();
}
int buscasequencial(int v,int n,int a[2-1]){
    int achei,i;
    achei=0;
    i=0;
    while((i<n)&&(achei==0)){
                             if(a[i]==v){
                                   achei=1;
                             }else{
                              i++;
                             }
    }
    if(achei==1){
                printf("valor encontrado na posicao %d do vetor \n",i);
                }else{
                      printf("valor não encontrado!");
    }
}

Editado por waguim
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

não testei o codigo aqui, mas olhando, se não me engano o primero erro é já na declaracao da funcao buscasequencial().

acho q você não pode declara-la la em cima, com parametros diferentes de como ela vai aparecer la embaxo.

e depois, acho q o array como parametro não pode ter os indices definidos.

tipo em vez de declarar o parametro a como a[2-1], declare como a[]

otra coisa, você não ta retornando resultado pra funcao.

se você quer retornar a variavel achei, devia fazer assim:

return achei;

fora isso, se continuar dando erro, posta quais as mensagens de erro do compilador.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom tava numa preguiça danada mais arrumei o codigo... :D

Mas não consegui fazer compilar, não to sabendo como declar as variaveis na função.

Se alguém poder ajudar, ta ae o novo codigo.

#include<conio.h>
#include<stdio.h>
#define n 10
/*** Prototipo da função***/
int buscasequencial(int v,int a[]);
/****Função Principal***/
main()
{
      int a[n]={0,1,2,3,4,5,6,7,8,9};
      int v;
      printf("Digite o valor a ser buscado: ");
      scanf("%d",&v);
      printf("o valor esta na posicao: %d",buscasequencial(v,a[]));
      getche();
}
/***Funçao de Busca***/
int buscasquencial(int v,int a[]){
    bool achei=false;
    int i=0;
    while((i<n)&&(achei==false)){
                             if(a[i]==v){
                                   achei=true;
                             }else{
                              i++;
                             }
    }
    if(achei==true){
                return i;
                }else{
                      return -1;
    }
}
Criei a funcao diretamente no corpo do programa ela funcioa direitim, mas precisava aprender a trabalhar com funçoes, ta ae tb o codigo sem funcao, diretamente no corpo do programa
#include<conio.h>
#include<stdio.h>
#define n 10
main()
{
    int a[n]={0,1,2,3,4,5,6,7,8,9};
    int v;
    printf("Digite o valor a ser buscado: ");
    scanf("%d",&v);
    bool achei=false;
    int i=0;
    while((i<n)&&(achei==false)){
                             if(a[i]==v){
                                   achei=true;
                             }else{
                              i++;
                             }
    }
    if(achei==true){
                printf("Encontrado na posicao: %d",i);
                }else{
                      printf("não encontrado!!!");
    }
    getche();
}

Mas tenho de aprender sobre funções, não adianta fugir, rs

Editado por waguim
Link para o comentário
Compartilhar em outros sites

  • 0

e aew waguim, tipo assim, pelo pouco que sei não existem variavés booleanas em C( mas se você conseguiu né ), tenta muda o bool por int, atribui 0 pra false e 1 para true,

tenta fazer essas modificaçoes, e muda a linha que você chama a função:

printf("o valor esta na posicao: %d",buscasequencial(v,a[]));
para:
printf("o valor esta na posicao: %d",buscasequencial(v,a));

você não precisa dizer que a variavel é do tipo array na chamada da função apenas na declaração!

bom espero que ajude, abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

É isso mesmo Romerito, para mim também não tem variaveis booleanas em C. Talvez alguns compiladores aceitem ai teria que ver. O código ficará parecido com o abaixo.

#include<conio.h>
#include<stdio.h>
#define n 10


/*** Prototipo da função***/
int buscasequencial(int v,int a[],int tamanho);


/****Função Principal***/
main()
{
      int vetor[]={0,1,2,3,4,5,6,7,8,9};
      int valor;
      int posicao;
      
      
      printf("Digite o valor a ser buscado: ");
      scanf("%d",&valor);
      
      //Chamada da função buscasequencial
      posicao =(int)buscasequencial(valor,vetor,n);
      
      //Verificação do retorno da função na variavel posicao
      if(posicao!=-1)
        printf("o valor esta na posicao: %d", vetor[posicao]);
      else
         printf("Numero não existe no vetor"); 
            
      getche();
}



/***Funçao de Busca***/
int buscasequencial(int v,int a[],int tamanho)
    {
    int i=0;
    int achei=0; //Definindo variavel como falso  FALSO=0 VERDADEIRO=1
    while(i<tamanho && achei==0)
      {
            if(a[i]==v)
              {
                 achei=1;//Se achou o numero
                 return i;
               }
             else{
                  i++;
                 }
      }
    //Se não encontrou o numero
    if(achei==0)
      {
      return -1;
      }
}

A lógica da coisa é que a função deve retornar a posição onde se encontra o número que é solicitado. Tendo a posição correta, basta imprimi-la. Com o tempo isso vai ficando mais claro.

Dúvidas, poste ai.

Abraços.

Editado por _Cristiano_
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela ajuda, agradecimentos ao Cristiano, deu certim a decaração das funçoes.

Li alguma coisa a respeito, parece q em c não tem realmente vairiaveis doi tipo bool, mas o professor falo q podia usar e o complidador dev C++ não deu erro, rs. Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
parece q em c não tem realmente vairiaveis doi tipo bool

Variáveis não é bem o termo correto. Tipo nativo de dado booleano, como há em outras linguagens, a linguagem C realmente não tem. Mas ela tem algo bem melhor, que é forma de avaliar os valores numéricos, conforme comentei acima. Assim é muito mais prático e flexível.

Agora, com ou sem um tipo booleano nativo, toda e qualquer linguagem SEMPRE terá que contar com algum meio de teste booleano, evidentemente. Logo, isso é apenas um mero detalhe. :)

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...