Ir ao conteúdo
  • Cadastre-se

C# Exercício união de 2 vetores em um vetor (não pode ter números repetidos)


Lucass20

Posts recomendados

Estou com um problema, por causa dos números repetidos fica espaços vazios no vetor C, pois ele só compara depois que os números entram, eu tentei usar dois contadores onde o vetor C recebe os números diferentes, mas aí se eu digitasse 0 uma vez ele não aparecia na união, parece que 0 é nulo.

Uma maneira seria quando o número fosse repetido, voltasse para ler outro número assim não ficaria com espaços vazios.

 

segue o código:

 

  int[] A = new int[6];
            int[] B = new int[6];
            int[] C = new int[12];
            int j = 0;// cont1 = 0, cont2 = 0, cont3 = 0, soma = 0;

            
                for (int i = 0; i < 6; i++)
                {
                    Console.WriteLine($"Informe o {i + 1} º número do vetor A:");
                    A[i] = Convert.ToInt32(Console.ReadLine());

                    bool achou = false;
                    foreach (int elemento in C)
                    {
                    if (elemento == A[i])
                        {
                            achou = true;
                        }
                    }
                    if (achou == false)
                    {
                        //cont1++;
                        C[j] = A[i];
                        j++;
                    }
                }

          

            Console.Write("\n");
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine($"Informe o {i + 1} º número do vetor B:");
                B[i] = Convert.ToInt32(Console.ReadLine());

                bool achou = false;
                foreach (int elemento in C)
                {
                    if (elemento == B[i])
                    {
                        achou = true;
                    }
                }
                if (achou == false)
                {
                    //cont2++;
                    C[j] = B[i];
                    j++;
                }
            }

            //soma = cont1 + cont2 + cont3;
            Console.WriteLine("\nO vetor união é composto por:");
            for (int i = 0; i < 12; i++) // no lugar de 12, eu tentei colocar soma, mas aí o 0 não entra.
            {
                Console.WriteLine(C[i]);
            }
            Console.WriteLine("\nAperte uma tecla para retornar ao menu principal:");
            Console.ReadKey();

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Lucass20   o Loop foeach percorre todos os elementos do vetor , e como ao criar um vetor , todos os elementos sã inicializados com valor zero , então quando digita zero aí já tem esse número zero no vetor aí dá erro , então inicialize o vetor antes , e seu código poderia ser assim  :

using System;

class MainClass {
  public static void Main (string[] args) {
    int[] A = new int[6];
    int[] B = new int[6];
    int[] C = new int[12];
    for(int i=0; i<12; i++)C[i]=-111;
    int j = 0;
    for (int i = 0; i < 6; i++)
    {
        Console.WriteLine($"Informe o {i + 1} º número do vetor A:");
        A[i] = Convert.ToInt32(Console.ReadLine());
        bool achou = false;
        foreach (int elemento in C)
        {
            if (elemento == A[i])
            {
                achou = true;
                break;
            }
        }
        if (achou == false)
        {
            C[j] = A[i];
            j++;
        }
    }
    Console.WriteLine();
    for (int i = 0; i < 6; i++)
    {
        Console.WriteLine($"Informe o {i + 1} º número do vetor B:");
        B[i] = Convert.ToInt32(Console.ReadLine());
        bool achou = false;
        foreach (int elemento in C){
            if (elemento == B[i])
            {
                achou = true;
                break;
            }
        }
        if ( ! achou )
        {
            C[j] = B[i];
            j++;
        }
    }
    // método de Ordenação , Quase BubbleSort
    for(int i=0; i<j; i++ )
    {
      for(int w=i; w<j; w++)
      {
        if(C[i] > C[w])
        {
          int aux  = C[i];
              C[i] = C[w];
              C[w] = aux ;
        }
      }
    }
    Console.WriteLine("\nO vetor união em Ordem crescente é composto por:");
    foreach (int elemento in C ) 
    {
        if( elemento != -111 )
        {
            Console.WriteLine(elemento);
        }    
    }
    Console.WriteLine("\nAperte uma tecla para retornar ao menu principal:");
    Console.ReadKey();
  }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...