Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Danilo Lopes

Vetores - Como não repetir os dados?

Recommended Posts

Estou com o seguinte exercícios. Consegui iniciá-lo, mas só consigo conferir se o número é igual ao último inserido. Preciso que ele seja comparado com todos.

 

/*6) Criar um algoritmo que leia dois conjuntos de números inteiros, tendo cada um 10 e 20
elementos e apresentar os elementos que não são comuns aos dois conjuntos.*/
 
# include <iostream>
using namespace std;
 
int main () {
const int one = 3;
const int two = 6;
int vet10[one];
int vet20[two];
int aux;
 
aux = 0;
 
for ( int i = 0 ; i < one ; i++){
cout << "Digite os numeros no vetor de 10 elementos: ";
cin >> vet10;
cout << endl;
}
 
for ( int i = 0 ; i < two ; i++){
cout << "Digite os numeros no vetor de 20 elementos: ";
cin >> vet20;
cout << endl;
}
 
for (int i = 0 ; i < one ; i++){
for (int j = 0 ; j < two ; j++){
if ((vet10 != vet20) && (vet10 != aux)){
aux = vet10;
cout << vet10 << " ";
}
}
}
 
for (int i = 0 ; i < two ; i++){
for (int j = 0 ; j < one ; j++){
if ((vet20 != vet10) && (vet20 != aux)){
aux = vet20;
cout << vet20 << " ";
}
}
}
 
return (0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce percorre pelo array cada vez que for inserido um numero..o conceito é o mesmo.. por exemplo

int conta = 0;int valor = 0;//Ja dentro do loopcin >> valor;//percorre o array até o numero de elementos que ja foram colocadoswhile(conta < i ){  if(valor == vet10[conta]) {     //faz o que voce quiser..,se nao quiser botar o elemento no array entao sai do    //loop ps:    break; }  conta = conta +1;}//se saiu do loop porque alcançou o valor de i,então é porque os numeros são diferentes,entao colocaria o valor no arrayif(conta == i){  vet10[i] = valor;}conta = 0;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que entendi o que você fez, mas se eu for comparando cada vez que insiro um número como faço para inserir os dois vetores ao mesmo tempo?

Compartilhar este post


Link para o post
Compartilhar em outros sites
for (int i = 0 ; i < one ; i++){
for (int j = 0 ; j < two ; j++){
if ((vet10 != vet20) && (vet10 != aux)){
aux = vet10;
cout << vet10 << " ";
}
}
}
 
for (int i = 0 ; i < two ; i++){
for (int j = 0 ; j < one ; j++){
if ((vet20 != vet10) && (vet20 != aux)){
aux = vet20;
cout << vet20 << " ";
}
}
}
 
Eu faria um 3° vetor, pra ficar algo mais elaborado, ate em questão de repetir elementos...

O laço deve ser feito apos a leitura mesmo... assim como você esta fazendo, porém não existe necessidade desses 2 laços e sim de somente 1 laço... não entendi o motivo dessa aux sua, o 3º vetor resolveria o caso, a comparação seria : if ((vet20 != vet10)  && não esta no 3° vetor (função retorna true se não existe o elemento)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Otávio, mas como eu faria para verificar se o número não está no 3º vetor e como inseri-lo se não estiver?

Tentei aqui mas não consegui.

 

    for (int i = 0 ; i < one ; i++){
        for (int j = 0 ; j < two ; j++){
            for ( int k = 0 ; k < fim ; k++){
                if ((vet10 != vet20[j]) && (vet10 != vet[k])){
                    vet[k] << vet10;
                    cont =  cont + 1;
                }
            }
        }
    }
    
    for (int i = 0 ; i < fim ; i++){
        cout << vet << " ";
    }

Editado por Danilo Lopes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!

Eu faria assim:

 

uma  função que organizar em ordem Crescente (tabela[], tamanho da tabela) {

... depois que organizar em ordem crescente a tabela (as duas);

}

 

Vamos comparar um por um dos valores;

para isso use uma função que busca um valor dentro de um vetor qualquer;

 

for i = 0 i < tamanho1; i++

 if busca(tabela1[ i ], tabela2, tamanho2 )

achou++

 

a função busca retorna (1-sim/0-não) buscar(valor, tabela[], tamanho da tabela) {

/* função pode ser otimizada com pesquisa binaria */

 

função buscará um valor na tabela, use a declaração de repetição (for/ while/ goto)

que mais lhe agradar para isso, ou chamada recursiva (não recomento a ultima não); 

}

Observe que toda vez que retorna sim, uma variável deve ser incrementada, achou++

assim então toda vez que retorna zero(0 - não) eu imprimo esse valor;

Editado por Mauro Britivaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mauro, desculpa mas não consegui entender o seu raciocínio. Estou começando a programar agora. Estou fazendo AEDS I. Se puder me ajudar  a entender de uma forma mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, também estou aprendendo...
E Programação C'99, que é a versão bem mais velha que atual C++ (cujo somente ouço falar aqui no fórum coisa boas),

Em um cursinho aqui perto de onde moro

tive um exercício parecido com seu, quase no final do curso que, fiz assim!

 

Em etapas:

Como se segue;

  1. Vou criar uma função (func1) que organize minha tabela (v) em ordem do menor valor para o maior;
  2. Depois vou criar uma função (func2) que recebe por parâmetros 3 argumentos (o meu vetor, o tamanho do meu vetor, e o valor que busco no meu vetor, e retorne a função para mim 1 ou 0 (sim ou não));
  3. Por ultimo vou criar um função (func3) que una as duas anteriores, e mais;
  • fun1(v1, tamanho_v1) para organizar o meu v1 em ordem crescente;
  • fun1(v2, tamanho_v2) para organizar o meu v2 em ordem crescente;
  • for(i = 0; i < tamanho_v1; i++)

int achou = 0;

if( func2( v2, tamanho_v2, v1[ i ] ) )

{

achou++;

}

else

{

printf("Esse valor não foi localizado na tabela v2: %d", v1[ i ]);

}

 

func1 (deve ser capas de trocar o valor de uma elemento pelo valor do outro no vetor

isso é muito útil, sempre que envolve pesquisas, organizar antes de buscar qualquer dado ).

Exemplo: 

/* troca os valores das variáveis** Organiza vetor em sistema crescente de números decimais** @parâmetros int[], size_t (um inteiro qualquer positivo diferente de 0)** @retorna nada */void Crescente(int setVetor[], size_t setVetTam){    int j, i, tempj = 0;    const char prox = 1;        setVetTam -= 1;        for(i = 0; i < setVetTam; i++)        {   for(j = 0; j < setVetTam -i; j++)            {   if( setVetor[j] > setVetor[j +prox])                {                    tempj = setVetor[j];                    setVetor[j] = setVetor[j +prox];                    setVetor[j +prox] = tempj;                }            }        }}

func2(compara um valor X, com todos os valores do vetor[20] ou mais)

Exemplo:

/* Busca Linear (independente da organização dos dados);** Busca por valor em uma tabela de valores.** @parâmetros int[], size_t (um inteiro qualquer positivo diferente de 0), ** int;** @retorna sim(1) ou não(0)   */int buscar(int v[], size_t vTam, int valor){    int i;        for(i = 0; i < vTam; i++)        {   if(v[i] == valor)                return 1;        }return 0;}

Ok :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×