Ir ao conteúdo
  • Cadastre-se
Pempa

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

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

            
        }
    }
}

 

 

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
Este tópico está parado há muito tempo. Certifique-se que a sua mensagem tem a ver com o tema sendo discutido. Obrigado.

Junte-se à conversa

Você pode postar agora e cadastrar-se depois. Se você tem uma conta, faça o login para postar.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restore formatting

  Só é possível ter até 75 emoticons.

×   O link foi automaticamente convertido para mostrar o conteúdo.   Clique aqui para mostrá-lo como link comum

×   Seu texto anterior foi restaurado.   Limpar o editor

×   You cannot paste images directly. Upload or insert images from URL.






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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!