Ir ao conteúdo
  • Cadastre-se

C união de vetores em linguagem c


casa1

Posts recomendados

não ta imprimindo o resultado da união mas aparentemente o codigo está certo

<>

#include <stdio.h>

#define TAM 10

int main(void) {

int v1[TAM], v2[TAM], u[TAM*2], x, y;

 

for(x=0; x<TAM; x++){

printf("Itens do primeiro conjunto\n");

scanf("%i", &v1[x]);

u[x]=v1[x];

}

 

for(x=0; x<TAM; x++){

printf("Itens do segundo conjunto\n");

scanf("%i", &v2[x]);

u[x+10]=v2[x];

}

for(x=0; x<TAM*2; x++){

for(y=x; y<TAM*2; y++){

if(u[x]==u[y])

{u[y]=0;}

else{}

}

}

printf("Exibindo vetor");

for(x=0; x<TAM*2; x++){

if(u[x]!=0){

printf("%i", u[x]);

} else{}

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

@Midori assim?

#include <stdio.h>

#define TAM 10

int main(void) {

int v1[TAM], v2[TAM], u[TAM*2], x, y;

 

for(x=0; x<TAM; x++){

printf("Itens do primeiro conjunto\n");

scanf("%i", &v1[x]);

u[x]=v1[x];

}

 

for(x=0; x<TAM; x++){

printf("Itens do segundo conjunto\n");

scanf("%i", &v2[x]);

u[x+10]=v2[x];

}

for(x=0; x<TAM*2; x++){

for(y=x; y<TAM*2; y++){

if(u[x]!=u[y]) ?

{u[y]=0;}

else{}

}

}

printf("Exibindo vetor");

for(x=0; x<TAM*2; x++){

if(u[x]!=0){

printf("%i", u[x]);

} else{}

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

2 horas atrás, casa1 disse:

não ta imprimindo o resultado da união mas aparentemente o codigo está certo

<>

 

Aparências enganam, diz o ditado. 

 

<> e o botão code


Por exemplo. falando de aparências,  o botão code tem essa legenda: <>

Mas se você colocar essa legenda no texto só vai aparecer isso: as duas letrinhas <> como se vê no seu post

É para apertar o o botão com a legenda, e vai abrir um formulário onde você cola o código... ;) 
 

image.png.0ef92a92ddeb613bfd51ac0b9404af7f.png

 

Esse aí do lado.

 

 

 

E aí pode colar o código lá dentro...

 

#include <stdio.h>

#define TAM 10

int main(void) {

int v1[TAM], v2[TAM], u[TAM*2], x, y;

 
for(x=0; x<TAM; x++){
printf("Itens do primeiro conjunto\n");
scanf("%i", &v1[x]);
u[x]=v1[x];
}

for(x=0; x<TAM; x++){
printf("Itens do segundo conjunto\n");
scanf("%i", &v2[x]);
u[x+10]=v2[x];
}
for(x=0; x<TAM*2; x++){
for(y=x; y<TAM*2; y++){
if(u[x]!=u[y])
{u[y]=0;}
else{}
}
}
printf("Exibindo vetor");
for(x=0; x<TAM*2; x++){
if(u[x]!=0){
printf("%i", u[x]);
} else{}
}
return 0;
}

 

Seu programa está muito complicado. E ruim de ler com tudo grudado do lado esquerdo.

 

Sabe usar uma função?  É muito mais simples do que repetir código.

 

A lógica parece quase certa, mas não deve declarar variáveis de controle do loop fora do loop. E precisa ter em conta o total de valores usados na união, que pode ser apenas TAM se os dois vetores forem iguais. É o que está faltando

 

 

Link para o comentário
Compartilhar em outros sites

@Midori Obrigadoooooo!!! fiz assim e deu certo 

#include <stdio.h>
#define TAM 10
int main(void) {
  int v1[TAM], v2[TAM], u[TAM*2], x, y;

  for(x=0; x<TAM; x++){
    printf("Itens do primeiro conjunto\n");
    scanf("%i", &v1[x]);
    u[x]=v1[x];
  }

for(x=0; x<TAM; x++){
    printf("Itens do segundo conjunto\n");
    scanf("%i", &v2[x]);
    u[x+10]=v2[x];
  }
  for(x=0; x<TAM*2; x++){
      for(y=x; y<TAM*2; y++){
        if(u[x]==u[y] && x!=y) {u[y]=0;} else{}
        
      }
  }
printf("\nExibindo a união\n");
for(x=0; x<TAM*2; x++){
  if(u[x]!=0){
    printf("Valor %i\n", u[x]);
   } else{}
} 
  return 0;
}

 

Link para o comentário
Compartilhar em outros sites

32 minutos atrás, casa1 disse:

Obrigadoooooo!!! fiz assim e deu certo 

 

Mesmo?

 

Entendeu as coisas que eu expliquei? Leu?

 

Imagino que sim porque agora usou direito o tal botão code...

 

O que acontece com seu programa se todos os elementos do primeiro vetor forem 0 e metade dos valores do segundo?

 

Ou se um apenas for zero? 

 

E se os vetores forem iguais?

 

Como testou isso?

 

Não use variáveis globais para controlar um for. É um desastre.

 

TESTE o retorno de scanf(). Sempre. Se não ler um valor vai somar o que?

 

Pode ser mais gentil com o usuario e mostrar a ordem dos valores que ele esta digitando?

 

Pode não pular de linha na leitura?  Não por acaso o prompt fica sempre na mesma linha. é mais natural.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@arfneto Li sim, agradeço pela dica de como usar o botão code.
Entretanto não sei usar uma função para não ficar usando o comando de repetição e usei variáveis globais pra testar, não sabia.

E sim posso não pular de linha, achei que fosse comum, pois vejo meus professores fazendo... Agradeço pelas dicas 🙂

Link para o comentário
Compartilhar em outros sites

1 hora atrás, arfneto disse:

O que acontece com seu programa se todos os elementos do primeiro vetor forem 0 e metade dos valores do segundo?

 

Ou se um apenas for zero? 

 

E se os vetores forem iguais?

 

Como testou isso?

 

 

testou mesmo?

1 hora atrás, casa1 disse:

Entretanto não sei usar uma função para não ficar usando o comando de repetição

 

não se trata de comando de repetição mas sim de repetir comandos, afinal precisa mostrar os 3 vetores. Ou deveria.

 

1 hora atrás, arfneto disse:

TESTE o retorno de scanf(). Sempre. Se não ler um valor vai somar o que?

2 horas atrás, arfneto disse:

não deve declarar variáveis de controle do loop fora do loop. E precisa ter em conta o total de valores usados na união, que pode ser apenas TAM se os dois vetores forem iguais. É o que está faltando

 

 

Isso
 

printf("\nExibindo a união\n");
for(x=0; x<TAM*2; x++){
  if(u[x]!=0){
    printf("Valor %i\n", u[x]);
   } else{}
} 

 

confira a união? ter um zero no vetor? E se o primeiro vetor fosse todo de zeros. como eu te perguntei? E se tivesse algum zero? E se tivesse no segundo? Qual a lógica disso?

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!