a operacao q eu quero fazer eh seguinte:
se um dado numero pertence a um vetor realizo uma determinada operacao , caso contrario realizo uma outra.
mas para isso tenho q comparar o numero com TODOS, os do vetor.
tipo meu problema, eh q qndo faco a comparacao qndo ele encontra um valor q atende as condicoes ele ja executa a operacao sem percorrer todo vetor.
resumindo eh ver se um numero "pertence" ou "nao pertence" a um conjunto
alguem tem uma ideia..
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Como verificar se um nume...
em que linguagem?? C??
o vetor esta ordenado??
de mais algumas informações...
.....
edit:
Se o vetor esta ordenado vc pode testar o valor do meio do vetor, se ele for acima do valor pesquisado, procure o valor a partir dele, caso contrário procure o valor abaixo dele. Isso vai economizar algum tempo na pesquisa.
caso o vetor não seja ordenado, pesquisa de um por um mesmo.
Dê uma lida:
Eu não dou o peixe, ensino a pescar.
Meu Blog.
intrusoem que linguagem?? C??
o vetor esta ordenado??
de mais algumas informações...
.....
edit:
Se o vetor est...
foi mal as falhas...
linguagem C, nao esta ordenado...
Cansei da Privada! -- Eu acredito demais na sorte. E tenho constatado que, quanto mais duro eu estudo, mais sorte eu tenho. (Adaptado - Thomas Jefferson)
entendeu minha sugestão??
Dê uma lida:
Eu não dou o peixe, ensino a pescar.
Meu Blog.
intrusoentendeu minha sugestão??
entendi , economiza mto tempo, vo tentar colocar uma busca binaria
vlw ai
Cansei da Privada! -- Eu acredito demais na sorte. E tenho constatado que, quanto mais duro eu estudo, mais sorte eu tenho. (Adaptado - Thomas Jefferson)
Gordona operacao q eu quero fazer eh seguinte:
se um dado numero pertence a um vetor realizo uma determinada operacao , ...
Eu faria da seguinte maneira(técnica troglodita):
Uma variável "lógica"
Uma variável de contagem
Uma variável vetorial
/* completamente informal */
float buscar; /* elemento a ser procurado */
int i = 0; /* variável lógica */
int n =0; /* contador */
float v[10]; /* por exemplo */
while ( i == 0 && n < 10)
{
if (v[n]== buscar)
i = 1;
n++;
}
If (i ==1)
printf(" O elemento %f pertence ao conjunto",buscar);
else
printf(" O elemento %f nao pertence ao conjunto",buscar);
Obs: De qualquer modo, dentro do laço while, descobrimos se o elemento pertence ou não ao conjunto, o laço termina se o elemento foi encontrado ou se após percorrer todo o vetor, nada foi encontrado (a variável n dá conta disso)
Té+
Kali
PS: se alguém fizer uma versão via busca binária, faça um post para aprendermos!
Gordonmas para isso tenho q comparar o numero com TODOS, os do vetor.
tipo meu problema, eh q qndo faco a comparacao qndo ele encontra um valor q atende as condicoes ele ja executa a operacao sem percorrer todo vetor.
resumindo eh ver se um numero "pertence" ou "nao pertence" a um conjunto
:?: Não entendi. Por que você precisa percorrer todo o vetor? Se a operação é verificar se o número "pertence ou não pertence" ao vetor, bastaria parar na primeira ocorrência. :?:
Jeferson Charles Mayer
"Como é que eu vou enxergar a tal floresta, com todas essas árvores atrapalhando a visão?"
ele quer dizer que precisa percorrer todo o vetor até achar...
por isso eu sugeri que ele iniciasse a pesquisa do valor do meio, assim ja teria "pulado" muitos valores, ganhando tempo.
depois de testar se o valor é menor do que o meio ele implementa um teste do tipo que o kalicrates postou. Só ser for maior que o valor central incrementa contator, caso contrário decrementa.
Dê uma lida:
Eu não dou o peixe, ensino a pescar.
Meu Blog.
kalicratesPS: se alguém fizer uma versão via busca binária, faça um post para aprendermos!
sobre a pesquisa binária, ela usa a idéia que eu postei ou seja, usar um intervalo de valores partindo da idéia de que se eu procuro X dentro de um conjunto, ele tem de estar em uma faixa de valores do conjunto, por isso eu pedi que ele procurasse o valor a partir do meio do vetor.
mas, a pesquisa binária usa um intervalo.
aqui vc encontra explicações sobre o algorítimo e um fonte em c.
http://www.adeec.fct.ualg.pt/PI_flobo/teorica16.html
t+
Dê uma lida:
Eu não dou o peixe, ensino a pescar.
Meu Blog.
O problema é que o vetor não está ordenado, então acho que o esforço computacional de ordenar tudo, e depois fazer uma busca binária seria maior do que simplesmente fazer uma busca sequencial.
|Dell Inspiron 6400|Intel Core 2 Duo T7200 (2GHz) |2GB DDR-2 RAM|120GB HD (5.400)|15.4" Wide True Life (1280x800)|Bluetooth integrado, bateria 9 células e mais umas coisinhas
Folding@Home Member!
fdbeloO problema é que o vetor não está ordenado, então acho que o esforço computacional de ordenar tudo, e depois fazer um...
depende do tamanho do vetor e de como ele será usado posteriormente.
por exemplo se o vetor será usado em várias pesquisas, depois de ordenado, a ordenação será util pois ganhamos tempo na pesquisa binária tornando o programa mais eficiente nas próximas pesquisas.
se o vetor é pequeno e a pesquisa será feita uma única vez então não temos porque ordenar o vetor pois as maquinas atualmente são rapidas o suficiente para realizar uma pesquisa sequencial eficiente em tempo aceitavel para conjuntos pequenos e a ordenação só seria perda de tempo.
Também depende do que chamamos de "pequeno".
t+
Dê uma lida:
Eu não dou o peixe, ensino a pescar.
Meu Blog.
Sim, se o vetor for utilizado outras vezes, em várias pesquisas, pode realmente valer a pena ordenar o mesmo.
Porém daí quem sabe o ideal seria na própria entrada de dados (dependendo de como ela for feita), já fazer a ordenação. Cada novo número recebido pelo vetor já é colocado na posição correta, ficando o vetor sempre ordenado. Nesse caso pode-se implementar inclusive uma pesquisa binária para achar a posição correta do novo número dentro do vetor.
Tudo depende da necessidade.
|Dell Inspiron 6400|Intel Core 2 Duo T7200 (2GHz) |2GB DDR-2 RAM|120GB HD (5.400)|15.4" Wide True Life (1280x800)|Bluetooth integrado, bateria 9 células e mais umas coisinhas
Folding@Home Member!
Não é mais ou menos isso que você está procurando?
#include <stdio.h>
int main()
{
int i=0;
int x;
int a=0;
int y[5];
for (i=0;i<=4;i++)
{
printf("Digite um valor numérico: "
scanf("%d",&y[i]);
}
printf("Digite o valor que deseja procurar no vetor: "
scanf("%d",&x);
for (i=0;i<=4;i++)
{
if (x==y[i])
printf("O valor foi encontrado: %d",y[i]);
else
a=a+1;
}
if (a>=5)
printf("\nO valor não foi encontrado."
return (0);
}
O usuário digitará 5 valores que serão gravados no vetor, e depois pesquisará por algum valor que esteja dentro deste...
[ ]'s
Linux User #394367
Asking Smart Questions
"Always remember that you are unique. Just like everyone else"
Mr.1001Não é mais ou menos isso que você está procurando?
[code]#include
int main()
{
...
Boa tarde,
O seu algoritimo também funciona, mas em qualquer situação, o vetor é percorrido sequencialmente do começo até o fim. A busca deve terminar se o valor foi encontrado ou se o vetor foi completamente percorrido, o laço que você propôs não leva isso em conta.
Té+
Kali
Porém daí quem sabe o ideal seria na própria entrada de dados (dependendo de como ela for feita), já fazer a ordenação. Cada novo número recebido pelo vetor já é colocado na posição correta, ficando o vetor sempre ordenado. Nesse caso pode-se implementar inclusive uma pesquisa binária para achar a posição correta do novo número dentro do vetor.
Eu também acho que esta é a solução mais eficiente.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke