Saber se um numero ja existe num arreio

eduino

Power Member
Boas ppl gostaria de saber se me poderiam ajudar com este problema!

gostaria de saber como ficaria um codigo para o seguinte:

Tenho que inserir um numero e depois tenho que verificar se esse numero ja existe ou nao no arreio!

alguem pode-me ajudar nisto ?

obrigado
 
"Arreio" Talvez "array"?
Convêm dizer em que linguagem de programação queres fazer isso, mas terás sempre que fazer um ciclo "for" para verificar se um determinado valor existe ou não num "array".
 
Boas!

Antes de mais, a inserção só deve ser feita após a verificação do array.

Tens vários algoritmos possíveis e em quase todos eles terás de usar um ciclo for para percorrer o array.

Olha o seguinte algoritmo, não é o mais eficaz certamente, mas também não é suposto fazer-te o trabalho, só ajudar-te :P

Código:
encontrado = falso
Para todos os elementos do array faz
   Se valor_a_inserir = valor_na_posição_corrente então
      encontrado = verdadeiro
      interrompe o ciclo (escusa de verificar os restantes elementos)
fim do Para
Se encontrado = falso então
   Adiciona elemento ao array
Isto é um pseudo-código demasiado aporteguesado :P Mas serve perfeitamente ;)

Estuda este algoritmo, tenta aplicá-lo. Certamente existem soluções melhores, esta foi a que me ocorreu neste momento ;)

abraços, HecKel
 
Boas!

Antes de mais, a inserção só deve ser feita após a verificação do array.

Tens vários algoritmos possíveis e em quase todos eles terás de usar um ciclo for para percorrer o array.

Olha o seguinte algoritmo, não é o mais eficaz certamente, mas também não é suposto fazer-te o trabalho, só ajudar-te :P

Código:
encontrado = falso
Para todos os elementos do array faz
   Se valor_a_inserir = valor_na_posição_corrente então
      encontrado = verdadeiro
      interrompe o ciclo (escusa de verificar os restantes elementos)
fim do Para
Se encontrado = falso então
   Adiciona elemento ao array
Isto é um pseudo-código demasiado aporteguesado :P Mas serve perfeitamente ;)

Estuda este algoritmo, tenta aplicá-lo. Certamente existem soluções melhores, esta foi a que me ocorreu neste momento ;)

abraços, HecKel


traduzindo para C fica:

Código:
...
encontrado=0;
for(i=0;i<contador;i++)
{
if(numero==array[i])
{
 
encontrado=1;
i=contador;
}
 
}
 
if(encontrado==1)
printf("\tnumero ja existe\n");
else
{
a[contador]=numero;
contador++;
}
...
 
descriçao:
 
-encontrado: é uma variavel do tipo inteiro que toma os valores 0 se o numero nao for encontrado e 1 se o numero for encontrado;
 
-numero: é o numero que queres procurar;
 
-contador: é o numero de posiçoes ocupadas no array;

qualque coisa apita...:007:
 
dava jeito fazeres um break (não me recordo se é esta a expressão em C) nesse for quando metes o encontrado = 1, apesar de colocando o i igual ao limite do for resultar..., não gosto é mt de alterar o incrementador :P

abraços, HecKel
 
dava jeito fazeres um break (não me recordo se é esta a expressão em C) nesse for quando metes o encontrado = 1, apesar de colocando o i igual ao limite do for resultar..., não gosto é mt de alterar o incrementador :P

abraços, HecKel

nunca usei break dentro do for, so usei break depois de um case, mas vou esperimentar para ver o k acontece
:)
 
Código:
for(int i=0; i< tam; i++)
{
	if (numero == array[i])
	{
		cout << "encontrado";
		break;
	}
}
isto em C++
tam é o tamanho do array
numero é o numero que queres procurar no array.
 
JuSt_Me_AnD_yOu, de facto dessa forma mostras se foi ou não encontrado, no entanto caso não seja encontrado falta-te algo para controlar a inserção do novo elemento no array, dessa forma nunca consegues (o programa) saber se foi encontrado ou não repetição. Besides, falta a segunda parte do programa ;)

abraços, HecKel
 
Já agora em java:

PHP:
public boolean existeNum(int[] vector, int num) {
   boolean existe = false;
   int contador = 0;

   while ( (contador < vector.length) && !existe) {
       if (vector[contador] == num)
          existe = true;
       contador++;
   }

return existe;
}

Não precisa de breaks, e sai do ciclo mal o valor exista, excusando de correr o vector todo, por causa da expressão boolean !existe.
deve funcionar, digo eu :)
 
Última edição:
Boas ppl gostaria de saber se me poderiam ajudar com este problema!

gostaria de saber como ficaria um codigo para o seguinte:

Tenho que inserir um numero e depois tenho que verificar se esse numero ja existe ou nao no arreio!

alguem pode-me ajudar nisto ?

obrigado

atao moço, nao dizes nada das sujestoes que te deram?
 
Já agora em java:

PHP:
public boolean existeNum(int num) {
   boolean existe = false;
   int contador = 0;

   while ( (contador < vector.length) && !existe) {
       if (vector[contador] == num)
          existe = true;
       contador++;
   }

return existe;
}
Não precisa de breaks, e sai do ciclo mal o valor exista, excusando de correr o vector todo, por causa da expressão boolean !existe.
deve funcionar, digo eu :)

Em PHP existe a função in_array(), não é preciso andar a criar a RODA.
 
Boas ppl gostaria de saber se me poderiam ajudar com este problema!

gostaria de saber como ficaria um codigo para o seguinte:

Tenho que inserir um numero e depois tenho que verificar se esse numero ja existe ou nao no arreio!

alguem pode-me ajudar nisto ?

obrigado
Buenax

Se queres em pascal:
pedes o numero
fazes um "para" da "variavel inicial" do aray até a "variavel final"
depois fazes um "se" nome do array='letra' entao
Escreves o que quiseres, em caso de existir, por exemplo:"writeln('o numero existe no array')"
E um "else" para a hipotse negativa.

Entendes?Fika Bem

Cump Filipe
 
e se resolvessemos este problema em cada uma das linguagens?
sei que cada um saberá mais que uma linguagem.
será muito interessante para alguém que queira aprender uma linguagem ver como funciona, neste exemplo por exemplo.
tentem é não repetir a linguagem!

Em scheme:

Código:
(define (verifica-el vector el)
  (define (percorre-auxiliar vector el posicao)
    (cond ((= posicao (- (vector-length vector) 1)) #f)
          ((= el (vector-ref vector posicao)) #t)
          (else (percorre-auxiliar vector el (+ posicao 1)))))
  (percorre-auxiliar vector el 0))
 
Última edição:
Código:
:-use_module(library(lists)).

% X = elemento a inserir; L = lista actual; NL = nova lista
insert_new(X,L,NL):-doesnt_exist(X,L),append(L,[X],NL).
doesnt_exist(_,[]).
doesnt_exist(X,[H|SL]):-X\=H,doesnt_exist(X,SL).

só naquela..


Ui, Scheme :lol:

Em C++ é bastante facil de fazer, tal como exemplificaram em cima. E penso que não é preciso colocar qualquer break.

a utilização do break visa a optimização do código
 
Última edição:
Back
Topo