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:  
BiioeX

Ajuda com Vetores

Recommended Posts

Queria ajuda com esse programinha ele segsegue a ideia de uniao e interseccao onde o existe um vetor A e um vetor B.. Exp: vetorA(1,2,3,4) e vetorB:(1,2,5,6) o vetorU tem q conter a união de A e B ou seja (1,2,3_4,5,6) e o vetorI intersecção (1,2) ambos com 4 elementos

#include <stdio.h>

#include <stdlib.h>

int main(void){

int veta[4], vetb[4], vetu[4], veti[4], i = 0, j = 0, k = 0;

for(i=0; i<4; i++){

printf("Insira vetor A = ");

scanf(" %d", &veta);

}

for(i=0; i<4; i++){

printf("Insira vetor B = ");

scanf(" %d", &vetb);

}

for(i=0; i<4; i++){

for(j=0; j<4; j++){

if(veta==vetb[j]){

veti[k] = veta;

k++;

}

}

}

for(i=0; i<4; i++){

printf("%d\n", veti);

}

for(i=0; i<4; i++){

for(j=0; j<4; j++){

if(vetb==veta[j]){

vetu[k] = vetb;

printf("%d\n uniao recebeu igual ", vetu[k]);

k++;

}

else {

vetu[k] = vetb;

k++;

vetu[k] = veta[j];

k++;

printf(" %d\n uniao recebeu diferente ");

}

}

}

printf("Uniao Vetores e ");

for(i=0; i<4; i++){

printf(" %d\n", vetu);

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque seus códigos na tag CODE pra facilitar a quem for ajudar.

 

Pra fazer união você precisa de um vetor com posições suficientes para caber todos os elementos caso não forem repetidos.

Fiz um aqui meio amador, só falta corrigir um detalhe. Ele não mostra o último elemento da união. 

#include <stdio.h>#include <stdlib.h>int main(void){    int veta[4], vetb[4], vetu[8], veti[4], i = 0, j = 0, k = 0, jatem = 0;    // entrada de dados    for(i=0; i<4; i++){             printf("Insira vetor A = ");             scanf(" %d", &veta[i]);    }    for(i=0; i<4; i++){             printf("Insira vetor B = ");             scanf(" %d", &vetb[i]);    }        //-------------------------------------------------------------------    // INTERSECÇÃO    for(i=0; i<4; i++){             for(j=0; j<4; j++){                      if(veta[i]==vetb[j]){                                           veti[k] = veta[i];                                           k++;                      }             }    }    // mostra intersecção    printf("Interseccao: \n");    for(i=0; i<k; i++){ // só pode contar até k, senão mostra as posições vazias do vetor             if(veti[i] != '\0')                        printf("%d\n", veti[i]);    }        //----------------------------------------------------------------    // UNIÃO        //zera a variável para a reutilização    k = 0;    //armazena o primeiro vetor    for(i=0; i<4; i++){ // guarda o primeiro vetor             vetu[k] = veta[i];             k++;    }    for(j=0; j<4; j++){ // pega elemento por elemento do vetor b             for(i=0; i<4; i++){ // compara com os do a                      if(vetb[i] == veta[j]){ // ele só pode guardar se não for igual                                 jatem = 1;                      }             }             if(jatem == 0){ // se não tem repetido, guarda                      vetu[k] = vetb[j];                      k++;             }             else{                  jatem = 0;             }    }        printf("Uniao Vetores: \n");    for(i=0; i<k; i++){             printf(" %d\n", vetu[i]);    } getch();} 
Editado por Math.Pi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código funciona porém quando forem repetidos no vetor ele repete no uniao exp: vetorA(1,1,2,2) vetor(3,3,4,4). quando compilo ele gera o união (1,1,2,2,3,3,4,4) tera q fazer um laço pra ver se tem repetido .. Mais muito obrigado estou começando agora ADS.. valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

@BiioeX

Pensando matematicamente, não deveriam haver elementos repetidos no mesmo vetor. Sei lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém o usuário q irá digitar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@BiioeX

Coloque um controle que verifique o número digitado e se já tem no vetor. Ele só vai guardar se não tiver.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Observe que como vetor deve ter no mínimo Tamanho(vetor1) + Tamanho(vetor2) na hora que é criado, ou você estará acessando memoria que não devia acessar. Só usar int vetor[8] e não terá erro.
O valor de N é alterado na função através de seu apontador, portando passe o endereço de N (&N) como argumento.
exemplo:
Insere(vetor3,vetor1,0,&N);
 
 void Insere(int *vetor,int x,int pos,int *N)
{
    if(pos<(*N))//Enquanto não tiver percorrido todo o vetor
    {
        if(vetor[pos]!=x) Insere(vetor,x,pos+1,N);//Verifique se encontrou x
    }                                                                   //Se encontrou, não faça nada(sem repetição)
    else//Varreu todo o vetor e não encontrou x?
    {
        vetor=x;//Insere o x na ultima posição do vetor
        (*N)++;//E aumenta o tamanho N do vetor
    }
} 





 

 

 

 

 ​

Editado por Ian Varejao

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

×