Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Vetores Elementos repetidos

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Vetores Elementos repetidos

    Olá pessoal, preciso fazer um código que leia dois vetores e que coloque em um terceiro vetor os elementos repetidos que existam nos dois primeiros vetores. Porém, meu código não está pegando corretamente estes elementos repetidos, apareçe alguns números bem estranhos como "3423423"(lixo de memória?). Vou deixar o código aqui abaixo.

    Código:
    #include<stdio.h>
    #include<stdlib.h>
    #include<locale.h>
    
    main()
    {
    setlocale(LC_ALL,"portuguese");
    
    int i=0;
    int j=0;
    int vetor1[10];
    int vetor2[10];
    int vetor3[10];
    int tam1=0;
    int tam2=0;
    int tam3=0;
    
    printf("Digite o tamanho do vetor 1\n\n");
    scanf("%i", &tam1);
    
    printf("Digite o tamanho do vetor 2\n\n");
    scanf("%i", &tam2);
    
    printf("Vetor 1:\n");
    for(i=0; i<tam1;i++)
    {
        printf("Digite o valor da posição %i\n", i);
        scanf("%i", &vetor1[i]);
    }
    
    printf("Vetor 2:\n");
    for(i=0; i<tam2;i++)
    {
        printf("Digite o valor da posição %i\n", i);
        scanf("%i", &vetor2[i]);
    }
    
    for(i=0;i<tam1;i++)
    {
        for(j=0;j<tam2;j++)
        {
            if(vetor1[j]==vetor2[i]) {
                vetor3[i]=vetor1[j];
                tam3++;
            }
        }
    }
    
    printf("Vetor 3:");
    for(i=0;i<tam3;i++)
    {
        printf("%i ", vetor3[i]);
    }
    
    }
    Last edited by *MaLaGueTa; 08-02-2014, 13:00. Motivo: Inserção na TAG code

  • Font Size
    #2
    Diga os valores de entrada e os valores de saída no seu caso.

    Comment


    • Font Size
      #3
      Já vi o que é, o problema provavelmente acontece quando você insere o valor ZERO nos dois vetores.

      Pode resolver isso zerando cada posição dos VETORES para limpar o lixo da memória (coisa que você não está fazendo).

      Isso pode ser feito com um loop preenchendo as posições deles com zero, ou dessa forma abaixo. Tomei a liberdade de acrescentar em seu código:

      Código:
      #include<stdio.h>
      #include<stdlib.h>
      #include<locale.h>
      
      main()
      {
      setlocale(LC_ALL,"portuguese");
      
      int i=0;
      int j=0;
      int vetor1[10];
      int vetor2[10];
      int vetor3[10];
      int tam1=0;
      int tam2=0;
      int tam3=0;
      
      memset(vetor1,(int)0,sizeof(int)*10);
      memset(vetor2,(int)0,sizeof(int)*10);
      memset(vetor3,(int)0,sizeof(int)*10);
      
      
      printf("Digite o tamanho do vetor 1\n\n");
      scanf("%i", &tam1);
      
      printf("Digite o tamanho do vetor 2\n\n");
      scanf("%i", &tam2);
      
      printf("Vetor 1:\n");
      for(i=0; i<tam1;i++)
      {
          printf("Digite o valor da posição %i\n", i);
          scanf("%i", &vetor1[i]);
      }
      
      printf("Vetor 2:\n");
      for(i=0; i<tam2;i++)
      {
          printf("Digite o valor da posição %i\n", i);
          scanf("%i", &vetor2[i]);
      }
      
      for(i=0;i<tam1;i++)
      {
          for(j=0;j<tam2;j++)
          {
              if(vetor1[j]==vetor2[i]) {
                  vetor3[i]=vetor1[j];
                  tam3++;
              }
          }
      }
      
      printf("Vetor 3:");
      for(i=0;i<tam3;i++)
      {
          printf("%i ", vetor3[i]);
      }
      system("PAUSE");
      }
      Veja se resolve.

      Não alterei isso mas é importante você aprender sobre quando usar o %i ou o %d (sim, eles são diferentes).

      Comment

      X
      Working...
      X