Ir ao conteúdo
  • Cadastre-se

Pempa

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por Pempa

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

     

     

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