Ir para conteúdo

POWERED BY:

Arquivado

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

wagnermoliveira

[Resolvido] Busca em Arrays

Recommended Posts

To tentado fazer uma busca em array, fuciona direitim, mas queria colocar ela dentro de uma funçao, alguem sabe como declarar certim? Uso o Dev c++. Abraço

#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;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode melhorar um pouco o seu código da seguinte maneira:

Para colocar o código na função, falta passar como argumento o tamanho do vetor. Você passa como parametro para a função, e sai caçando o elemento. Se você encontrá-lo você retorna 1 (ou true), do contrário, 0.

 

int buscasquencial(int valor, int a[], int tamanho);

 

Já na chamada da função, você colocaria

 

if (buscasequencial(...) == 1)
   printf("O elemento %d foi encontrado", v);
else
   printf("O elemento %d nao foi encontrado", v);

Assim você deixará um pouco melhor, já que não será impresso "-1" quando não for encontrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espero que seja de ajuda brother, é o seguinte...

 

Na hora em que você está chamando a função, você insere dois valores: V e A(vetor).

Saiba que: A[0] = A.

Na função ,quem receberá o A é um ponteiro (*pt).

 

//Busca Array
#include<conio.h>
#include<stdio.h>

#define n 10
/*** Prototipo da função***/
int buscasequencial(int v,int *pt);
/****Função Principal***/
int 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));//enviando V, A para a função
	  getche();
	  return 0;
}
/***Funçao de Busca***/
int buscasequencial(int v,int *pt) // recebendo valores, a partir de agora o ponteiro estará apontando para A[0]
{
	bool achei=false;
	int i=0;
	while((i<n)&&(achei==false))
	{
		if(*pt==v) // nesta condição você está testando SE o valor apontado pelo ponteiro é == V
		achei=true;
		else // Senão: pt++:  o ponteiro apontará para o proximo valor armazenado na memória, no caso é o A[1] ... a variável I tem a função de Limitar o loop do While
		{
		pt++;
		i++;
		}
	}
	if(achei==true)
	return i;
	else
	return -1;
}

Obs.: Quando se tem apenas uma linha de comando dentro de uma função básica, não precisa limitar com chaves {}.

Ex.:

 

 

Com chaves

 

if(achei==true)

{

return i;

}

else

{

return -1;

}

 

Sem Chaves

 

if(achei==true)

return i;

else

return -1;

 

 

 

Os dois exemplos são equivalentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode melhorar um pouco o seu código da seguinte maneira:

Para colocar o código na função, falta passar como argumento o tamanho do vetor. Você passa como parametro para a função, e sai caçando o elemento. Se você encontrá-lo você retorna 1 (ou true), do contrário, 0.

 

int buscasquencial(int valor, int a[], int tamanho);

 

Já na chamada da função, você colocaria

 

if (buscasequencial(...) == 1)
   printf("O elemento %d foi encontrado", v);
else
   printf("O elemento %d nao foi encontrado", v);

Assim você deixará um pouco melhor, já que não será impresso "-1" quando não for encontrado.

 

Valeu pela dica, mas precisava q ele retornasse a poiscao mesmo igual ta no exemplo q tentei fazer. Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espero que seja de ajuda brother, é o seguinte...

 

Na hora em que você está chamando a função, você insere dois valores: V e A(vetor).

Saiba que: A[0] = A.

Na função ,quem receberá o A é um ponteiro (*pt).

 

//Busca Array
#include<conio.h>
#include<stdio.h>

#define n 10
/*** Prototipo da função***/
int buscasequencial(int v,int *pt);
/****Função Principal***/
int 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));//enviando V, A para a função
	  getche();
	  return 0;
}
/***Funçao de Busca***/
int buscasequencial(int v,int *pt) // recebendo valores, a partir de agora o ponteiro estará apontando para A[0]
{
	bool achei=false;
	int i=0;
	while((i<n)&&(achei==false))
	{
		if(*pt==v) // nesta condição você está testando SE o valor apontado pelo ponteiro é == V
		achei=true;
		else // Senão: pt++:  o ponteiro apontará para o proximo valor armazenado na memória, no caso é o A[1] ... a variável I tem a função de Limitar o loop do While
		{
		pt++;
		i++;
		}
	}
	if(achei==true)
	return i;
	else
	return -1;
}

Obs.: Quando se tem apenas uma linha de comando dentro de uma função básica, não precisa limitar com chaves {}.

Ex.:

 

 

Com chaves

 

if(achei==true)

{

return i;

}

else

{

return -1;

}

 

Sem Chaves

 

if(achei==true)

return i;

else

return -1;

 

 

 

Os dois exemplos são equivalentes.

Caraca, valeu a dica, isso msm q tava precisando. Grande Abraço

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.