#include <stdlib.h>
//Autor: Mathias Santos Assis
main(){
/*O vetor A e B pode armazenar até 10 elementos*/
/*Considerando a hipótese de que todos os elementos
do vetor A seja diferente do vetor B, o vetor
união é declarado com 20 posições*/
/*Considerando a hipótese de que todos os elementos
do vetor A seja iguais do vetor B, o vetor
interseccao é declarado com 10 posições*/
/*Considerando a hipótese de que todos os elementos
do vetor A seja diferentes do vetor B, o vetor
Diferenca é declarado com 10 posições*/
int A[10],B[10], Uniao[20], interseccao[10], Diferenca[10];
int op, aux, preenchimento_A, preenchimento_B;
preenchimento_A = preenchimento_B = 0;
// Menu de opção
printf("<1> Inserir Novo vetor A\n");
printf("<2> Inserir Novo vetor B\n");
printf("<3> Uniao de A e B\n");
printf("<4> Interseccao de A e B\n");
printf("<5> Diferenca de A e B\n");
printf("<6> Sair\n");
/* Laço infinito (será repetido o bloco
permanentemente até que o comando
break seja utilizado)*/
for (int repeat=0; repeat<1; --repeat){
op = 0; // Garante que ocorra o laço abaixo
while ((op<1) || (op>6)){
printf("\nA opcao deve esta entre 1 e 6.\n");
printf("Digite opcao: ");
scanf("%d",&op);
} printf("\n"); // Quebra de linha
int Dif,Ok; // Declarando novas variáveis
/*Tanto o vetor A como o B, que é preenchido
escolhendo as repectivas opções 1 e 2,
não é permitido a inserção de valores
repetidos dentro do vetor. Ex.: A[0]=4;
Nenhuma outra posição dentro do vetor
alocará o número 4.*/
if (op == 1){
for (int i=0; i<10; ++i){
printf("A[%d]: ",i);
scanf("%d",&A[i]);
Ok=0; // Inicializando a variável
if (i>0){ while (Ok != 1){
Dif=0;
for (int j=0; j<i; ++j)
if (A[i]!=A[j]) Dif++;
/* Caso o valor digitado ainda não
persista no vetor, este será alocado.*/
if (Dif==i) Ok=1; // Quando Ok é igual a 1, o laço while é finalizado
else{
printf("A[%d]: ",i);
scanf("%d",&A[i]);
}
}}
}
printf("\n");
// Ordenando o vetor A em ordem crescente
for (int i=0; i<10; ++i){
for (int j=0; j<10; ++j){
if (A[j]>A[i]){
aux=A[j];
A[j]=A[i];
A[i]=aux;
}
}
}
// Exibindo o vetor A para o usuário
for (int i=0; i<10; ++i)
printf("%d\t",A[i]);
/* A variável abaixo ao assumir valor 1,
indica que o vetor A já foi preenchido */
preenchimento_A = 1;
}
if (op == 2){
for (int i=0; i<10; ++i){
printf("B[%d]: ",i);
scanf("%d",&B[i]);
Ok=0;
if (i>0){ while (Ok != 1){
Dif=0;
for (int j=0; j<i; ++j)
if (B[i]!=B[j]) Dif++;
if (Dif==i) Ok=1;
else{
printf("B[%d]: ",i);
scanf("%d",&B[i]);
}
}}
}
printf("\n");
// Ordenando o vetor B em ordem crescente
for (int i=0; i<10; ++i){
for (int j=0; j<10; ++j){
if (B[j]>B[i]){
aux=B[j];
B[j]=B[i];
B[i]=aux;
}
}
}
// Exibindo o vetor B para o usuário
for (int i=0; i<10; ++i)
printf("%d\t",B[i]);
/* A variável abaixo ao assumir valor 1,
indica que o vetor B já foi preenchido */
preenchimento_B = 1;
}
/* Quando a opção 3 é escolhida será
gerado o vetor união do vetor A e B,
que é formado por todos os elementos do
vetor A ou B, excluindo as repetições*/
int cont=10; int cont_Igualdade;
if (op == 3){
/* Se os vetores A e B estiverem preenchido
os comandos abaixo seram realizados*/
if ((preenchimento_A ==1)&&(preenchimento_B ==1)){
/* Como os elementos do vetor A são todos
diferentes entre si, as 10 primeiras posições
do vetor União seram ocupadas respectivamente
pelas 10 primeiras posições do vetor A. */
for (int i=0; i<10; ++i)
Uniao[i]=A[i];
for (int i=0; i<10; ++i){
cont_Igualdade=0;
for (int j=0; j<10; ++j)
if (B[i] == A[j]) cont_Igualdade++;
if (cont_Igualdade==0) Uniao[cont++]=B[i];
}
// Ordenando o vetor Uniao em ordem crescente
for (int i=0; i<cont; ++i){
for (int j=0; j<cont; ++j){
if (Uniao[j]>Uniao[i]){
aux=Uniao[j];
Uniao[j]=Uniao[i];
Uniao[i]=aux;
}
}
}
// Exibindo o vetor Uniao para o usuário
for (int i=0; i<cont; ++i)
printf("%d\t",Uniao[i]);
} else printf("Operacao invalida");
}
/* Quando a opção 4 é selecionada será
gerado o vetor da interseccao do vetor A e B,
que são os elementos comuns a ambos*/
if (op == 4){
if ((preenchimento_A ==1)&&(preenchimento_B ==1)){
for (int i=0; i<10; ++i){
for (int j=0; j<10; ++j){
if (A[i] == B[j])
// Exibindo o vetor Interseccao para o usuário
printf("%d\t",A[i]);
}
}
} else printf("Operacao invalida");
}
/*Quando a opção 5 é escolhida será
gerado o vetor da diferença entre
o vetor A e B.
O vetor formado é constituido pelos elementos
de A que não pertencem a B*/
if (op == 5){
if ((preenchimento_A ==1)&&(preenchimento_B ==1)){
for (int i=0; i<10; ++i){
cont_Igualdade=0;
for (int j=0; j<10; ++j)
if (A[i] == B[j]) cont_Igualdade++;
// Exibindo o vetor Diferenca para o usuário
if (cont_Igualdade==0) printf("%d\t",A[i]);
}
} else printf("Operacao invalida");
}
/* Ao escolher a opção 6 o programa será
encerrado, pois o laço for irá ser quebrado*/
if (op == 6)
break;
/* Ao fim de cada opção as duas
linhas abaixo será executadas*/
printf("\n");
system("pause");
}
}
Palavras-Chaves: vetor_A, vetor_B, união, intersecção, Difirença, Ordem Crescente, C/C++.
Artigos relacionados em C/C++:
- Somando duas matrizes em C/C++
- Criando um segundo vetor a partir do primeiro com seu módulo em C/C++
- Construindo uma tabuada no Visual Studio 2011
- Adivinhando um número em C/C++
- Programa com operações matemáticas C/C++
- Imprime um número N vezes, o número (N-1) ene menos uma vezes, e assim sucessivamente em C/C++
- Calculando a média de três notas em C/C++
- Programa com todos os comandos em C/C++
- Programa que recebe 10 valores, calcule e escreva a soma de todos os valores impares e maiores do que 200 em C/C++.
- Maior e menor valor de um vetor de inteiros em C/C++
- Desenhando um X na tela em C/C++
- Somando dois números em C/C++
- Programa que ler uma matriz quadrada e imprime a sua diagonal principal em C/C++
- Multiplicando duas matrizes em C/C++
Feito no Dev C++ 4.9.9.2 | Executável |