Pesquisa em C [RESOLVIDO]

1. Pesquisa em C [RESOLVIDO]

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 06/12/2010 - 18:25h

Ola pessoal,
fiz um programinha com cadastros, e gostaria de pesquisar o cadastro que eu fiz .
Alguem sabe ?
Vai um exemplo em algoritmo

registro {
nome : string;
}proj[4]
...

escreva (Digite o nome a ser pesquisado);
leia (nome);
para i de 1 ate 4 passo 1 faca
inicio
if (nome = proj[i].nome)
achou <- verdadeiro;
fimpara

se achou = verdadeiro
escreva (nome," encontrado.");
senao
escreva (Nao encontrado);


mais ou menos isso...
Me ajudem
quem souber mandem pra cbcarlos5@hotmail.com tbm







  


2. MELHOR RESPOSTA

João Cristiano Monteiro da Silva
jcristiano

(usa Fedora)

Enviado em 07/12/2010 - 17:35h

Por exemplo, vamos pensar que sua função ou método receba com parâmetro a chave, então ficaria assim:

#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

#define LIM 3

int PesquisaS(char *chave, char *vetor[]){
for(int i = 0; i < LIM; i++)
if(!strcmp(chave, vetor[i])) return (i);
return(-1);
}

int main(int argc, char **argv){
char *vetor[LIM];
for(int i = 0; i < LIM; i++){
vetor[i] = new char(80);
cout << "Entre com o nome[" << i << "]: ";
cin.getline(vetor[i], 80);
}
if (PesquisaS("Teste", vetor) >= 0)
cout << "\nEncontrou" << endl;
else
cout << "\nNao encontrou" << endl;
return (EXIT_SUCCESS);
}

Se o resultado de strcmp for 0 então encontrou, senao retorna uma posicao diferente.

t+

3. Re: Pesquisa em C [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 06/12/2010 - 18:28h

E onde estão estes dados ?


4. por exemplo

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 06/12/2010 - 18:30h

Imagine que ele ja leu os dados
Agora eu quero pesquisar.
entendeu?


5. Re: Pesquisa em C [RESOLVIDO]

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

Enviado em 07/12/2010 - 15:57h

Opa,
Se tu está esta armazenando em um vetor, pode fazer uma busca sequencial. Da posição inicial, até a posição final, comparando as chaves, neste caso, o nome.

Abraços e qualquer dúvida, posta aí!!!


6. Implementação em C++

João Cristiano Monteiro da Silva
jcristiano

(usa Fedora)

Enviado em 07/12/2010 - 16:27h

Pesquisa sequencial (percorre todo o vetor)

int PesquisaS(int vetor[], int chave){
for(int i = 0; i < sizeof(vetor); i++)
if(chave == vetor[i]) return (i);
return(-1);
}

Nesse caso, se encontrar a chave retorna a posição dela dentro do vetor, caso contrário retorna -1, ou seja, valor não encontrado. Nesse tipo de pesquisa o vetor nao precisa estar ordenado, no entanto, ele pode demandar muito tempo computacional levando em consideração a dimensão do vetor.

Outra alternativa seria a pesquisa binária, só que seu vetor deve estar ordenado.

int pesquisaB(int chave, int inicio, int fim, int vetor[]) {
if (inicio <= fim) {
int meio = (inicio + fim) / 2;
if (vetor[meio] == chave) return (meio);
if (chave < vetor[meio]) return (pesquisaB(chave, inicio, meio - 1, vetor));
return (pesquisaB(chave, meio + 1, fim, vetor));
}
return (-1);
}

Essa implementação demanda menos tempo computacional, tirando casos específicos!



7. Sim

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 07/12/2010 - 16:32h

Mas eu quero pesquisar nomes num vetor.
Percorrendo o vetor e comparando nome por nome.
Se encontrar o nome diga que encontrou,
senao diga que nao encontrou.
é isso.
Beleza?


8. Re: Pesquisa em C [RESOLVIDO]

João Cristiano Monteiro da Silva
jcristiano

(usa Fedora)

Enviado em 07/12/2010 - 16:44h

Se o tipo de dado que voce vai usar é string, então pode usar o próprio comparador condicional == dentro da pesquisa. Se for uma cadeia de char, use a função strcmp para comparar a duas cadeias. Se o valores comparados forem iguias, strcmp retorna 0.


9. strmcp

João Cristiano Monteiro da Silva
jcristiano

(usa Fedora)

Enviado em 07/12/2010 - 16:48h

Deixei de colocar o include da funcao strcmp. Deve-se colocar #include <string.h>


10. Legal

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 07/12/2010 - 16:50h

Estamos avançando...

O meu programa é uma cadeia de char.
como eu faço eu essa comparaçao com o strcmp?
Voce pode me dar um exemplo?


11. Muito Bom

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 07/12/2010 - 17:44h

Cara consegui resolver o meu codigo
e achei até um mais simples. Porem com a ajuda de vcs, é claro.
é assim
...
if (strcmp(string1,string2)==0)
eh igualzinho
else
diferente

vlw
Obrigado pela ajuda



12. Duvida

Carlos Bruno
cbcarlos7

(usa Linux Mint)

Enviado em 07/12/2010 - 17:52h

Como fazer uma string aceitar espaco? Sem entender que é outro campo
Alguem sabe?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts