Ir ao conteúdo
  • Cadastre-se

Programa que armazena os conjuntos a e b e exibe os resultados


Pempa

Posts recomendados

Boa noite, amigos do Fórum. 

 

Sou iniciante nos estudos em programação e como tal estou tendo problemas para resolver o seguinte exercício:

 

"Faça um programa que solicite ao usuário 2 conjuntos, A e B, de números inteiros, de tamanho M e N, respectivamente e sem repetições internas, isto é, o vetor A não pode conter duas vezes o mesmo valor, mas pode ter valores comuns com o vetor B.

 

Os valores M e N devem ser lidos do teclado, antes da leitura de cada conjunto, e devem ser estar no intervalo [0;100].

 

Após a leitura dos conjuntos, efetuar as seguintes operações:

 

- Exibir os conjuntos A e B ordenados em ordem crescente

- União dos conjuntos em ordem crescente

- Interseção dos conjuntos

 

Caso um dos conjuntos acima seja vazio, exibir a mensagem: 'Conjunto vazio'"

 

Só consegui fazer para exibir A e B ordenados em ordem crescente (embora não apareça no código abaixo, acabei apagando), mas não consegui achar solução para exibir a união e a intersecção dos dois conjuntos.

 

Se alguém puder me ajudar e eventualmente dar sugestões para melhorar o que eu já fiz, ficaria muito grato!

 

Segue o código:

 

namespace VetorNumRepetidos
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int troca = 0;
            int repetA = 1, repetB = 1;
            // vetor A para os valores do conjunto A
            int[] vetA = new int[5];
            // Vetor B para os valores do conjunto B
            int[] vetB = new int[5];
            // Vetor C para receber os valores de AUC (leia-se A união com C)
            int[] vetC = new int[10];

            // Laço for para carregar os dois vetores
            for (int i = 0; i < vetA.Length; i++) 
            {
                // Entrada dos valores do vetor A
                Console.WriteLine("Digite um valor para o vetor A: "); 
                vetA[i] = Convert.ToInt32(Console.ReadLine());
                // Entrada dos valores do vetor B
                Console.WriteLine("Digite um valor para o vetor B: "); 
                vetB[i] = Convert.ToInt32(Console.ReadLine());
            }

            // Laço Do While com for para varrer o vetor em busca de repetidos
            do {
            // Variável que armazena os repetidos encontrados                                       
            repetA--;                                                    
            for (int i = 0; i < 3; i++)
            {
                for (int j = i + 1; j < vetA.Length; j++)
                {
                    if (vetA[i] == vetA[j])
                    {
                        repetA++;
                        // Ao encontrar pede ao usuário para informar outro valor
                        Console.WriteLine("Elemendo {0} igual a {1}! Digite outro: ", vetA[i], vetA[j]); 
                        vetA[i] = Convert.ToInt32(Console.ReadLine());
                    }
                }
            }
            // Condição de teste para sair do laço
            } while (repetA != 0);

            // Laço Do While com for para varrer o vetor em busca de repetidos
            do
            {
            // Variável que armazena os repetidos encontrados
            repetB--;
            for (int i = 0; i < 3; i++)
            {
                for (int j = i + 1; j < vetB.Length; j++)
                {
                    if (vetB[i] == vetB[j])
                    {
                        repetB++;
                        // Ao encontrar pede ao usuário para informar outro valor
                        Console.WriteLine("Elemendo {0} igual a {1}! Digite outro: ", vetB[i], vetB[j]);
                        vetB[i] = Convert.ToInt32(Console.ReadLine());
                    }
                }
            }
            // Condição de teste para sair do laço
            } while (repetB != 0);

            // Laço for para ordenar os valores do vetor A em ordem crescente
            for (int i = 0; i < 3; i++)
            {
                for (int j = i + 1; j < vetA.Length; j++)
                {
                    if (vetA[i] > vetA[j])
                    {
                        troca = vetA[j];
                        vetA[j] = vetA[i];
                        vetA[i] = troca;
                    }
                }
            }
            
            // O mesmo para o vetor B
            for (int i = 0; i < 3; i++)
            {
                for (int j = i + 1; j < vetA.Length; j++)
                {
                    if (vetB[i] > vetB[j])
                    {
                        troca = vetB[j];
                        vetB[j] = vetB[i];
                        vetB[i] = troca;
                    }

                }
            }
            
            Console.WriteLine();

            // Dois laços for para passar os valores dos vetores A e B para o C
            for (int i = 0; i < vetA.Length; i++)
            {
                vetC[i] = vetA[i];
            }
            
            for (int i = 5; i < vetC.Length; i++)
            {
                vetC[i] = vetB[i - 5];
            }

            
            // Laço for para ordenar o vetor em ordem crescente
            for (int i = 0; i < 8; i++)
            {
                for (int j = i + 1; j < vetC.Length; j++)
                {
                    if (vetC[i] > vetC[j])
                    {
                        troca = vetC[j];
                        vetC[j] = vetC[i];
                        vetC[i] = troca;
                    }
                }
                
            }

            // Após aqui não consegui desenvolver um algoritmo para mostrar 
            // os valores de AUC e A^B (A intersecção com B)
            //

            /*
            for (int i = 1; i < 10; i++)
            {
                if (vetC[i - 1] == vetC[i])
                    Console.WriteLine();
            }
            */ 

            
        }
    }
}

 

 

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