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
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
Isto é um pseudo-código demasiado aporteguesado Mas serve perfeitamenteCó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
Estuda este algoritmo, tenta aplicá-lo. Certamente existem soluções melhores, esta foi a que me ocorreu neste momento
abraços, HecKel
...
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;
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
abraços, HecKel
for(int i=0; i< tam; i++)
{
if (numero == array[i])
{
cout << "encontrado";
break;
}
}
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;
}
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
Já agora em java:
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.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; }
deve funcionar, digo eu
Em PHP existe a função in_array(), não é preciso andar a criar a RODA.
BuenaxBoas 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
(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))
:-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).
Ui, Scheme
Em C++ é bastante facil de fazer, tal como exemplificaram em cima. E penso que não é preciso colocar qualquer break.
Que tal usarem ciclo while em vez de for? Assim n precisam de break pra nada