Ir ao conteúdo
  • Cadastre-se

Ajuda com Vetores


BiioeX

Posts recomendados

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);

}

}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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();} 
Link para o comentário
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

Link para o comentário
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
    }
} 





 

 

 

 

 ​

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...