Ir ao conteúdo
  • Cadastre-se
Pempa

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

Recommended Posts

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();
            }
            */ 

            
        }
    }
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vangodp, está em C#. Eu não mencionei a linguagem no título, mas botei uma tag informando.

 

Abraços!

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

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

×