Ir ao conteúdo
  • Cadastre-se

C++ como comparar um vetor com ele mesmo?


Inkywinky

Posts recomendados

Bom eu tenho uma questao para fazer porém nao faço a minima ideia do principal... como comparar um vetor com ele mesmo e ver se tem algum numero igual porque tipo

sempre que eu faço ele compara a posição um com a um tambem então fala que esta repitido mais nao esta ;-; alguem poderia me ajudar ... Não mostrem o programa por favor so expliquem como eu poderia faze-lo

 

Questão:

Faça um programa que leia um vetor A de dez posições contendo números inteiros. Determine e mostre a seguir, quais elementos de A estão repetidos e quantas vezes cada um se repete

 

[editado] meu codigo esta assim:

#include<iostream>
using namespace std;
int main()
{
    int vetor[10],a,b,c,d,quant[10];
    
    a=0;
    b=0;
    c=0;
    d=0;
    for (d=0;c<10;c++)
    {
        vetor[d]=0;
        quant[d]=0;
    }
    
    for (c=0;c<10;c++)
    {
        cin>>vetor[c];
    }
    
    for (a=0;a<10;a++)
    {
        for(b=0;b<10;b++)
        {
            if(vetor[a]==vetor && vetor[a]!=vetor[a])
            {
                cout<<vetor[a];
                quant[a]=quant[a]+1;
            }
        }
        cout<<quant[a];
    }
return 0;
}

 

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

Seu código não condiz com nada do que você parece querer fazer no enunciado. 
Exemplo... Como está usando C++, porque declarar variáveis globais(main) e não dentro do escopo?
 

Isso: 

int vetor[10],a,b,c,d,quant[10];
    
    a=0;
    b=0;
    c=0;
    d=0;
    for (d=0;c<10;c++)
    {
        vetor[d]=0;
        quant[d]=0;
    }
    
    for (c=0;c<10;c++)
    {
        cin>>vetor[c];
    }

 

Pode muito bem ser trocado por isso:
 

int vetor[10] = {0},quant[10] = {0};
    
    for (int i = 0; i<10; i++)
    {
        cin>>vetor[i];
    }

Queria entender qual sua lógica quanto a isso:
 

   if(vetor[a]==vetor && vetor[a]!=vetor[a])

Poderia me explicar ? 

Você está comparando um valor com um endereço de memória, em seguida está comparando se o valor X é diferente do valor X.

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

@Leonardo Pereira Kaiser      dentro desse loop  que faz a comparação você precisa colocar outro if para ver se não está comparando o número com ele mesmo,  isso seria assim :

if(a != b){

e então nesse if que compara os números não precisa dessa segunda comparação, coloque assim :

if(vetor[a]==vetor[b]){
    vetor[b]=0;
    quant[a]++;

com isso o número que repetiu será zerado, para que não entre  na próxima comparação ,    depois que sair desse loop você pode imprimir os números  e a quantidade de vezes que repetiu,   então veja  se no vetor em determinada posição for diferente de zero  imprime o número que está no vetor nessa posição e a quantidade de vezes que está no quant nessa mesma posição .

Link para o comentário
Compartilhar em outros sites

@Leonardo Pereira Kaiser    então, ele não pode comparar o número com ele mesmo pois senão sempre será igual,  por isso precisa colocar um   if  para que ele não compare o número com ele mesmo. e dentro desse if você coloca o outro if  que faz a comparação do número .

Link para o comentário
Compartilhar em outros sites

@devair1010 tendi valeu :3 tu e ***** segunda vez que me ajuda :D

 

adicionado 13 minutos depois

@devair1010  ficou assim

 for (a=0;a<10;a++)
    {
        for(b=0;b<10;b++)
        {
            if(a != B)
            {
            if(vetor[a]==vetor)
            {
            vetor=0;
            quant[a]++;
            }
            }
        }
    }
    for (e=0;e<10;e++)
    {
    if (vetor[e]!=0)
    {
        cout<<quant[e];
    }  
    }
return 0;
}

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

@Leonardo Pereira Kaiser    quase isso, ali no segundo if você colocou vetor sem a posição que deve ser posição b

assim

 if(vetor[a]==vetor[b])

e também dentro do if você esqueceu de colocar a posição do vetor.

  e na hora de imprimir escreva o número e depois a quantidade de vezes que ele repetiu.

Link para o comentário
Compartilhar em outros sites

http://prntscr.com/gmej1i@devair1010

adicionado 3 minutos depois

 ta assim (ps: desculpa te chamar tanto e que eu sou burro kk ;-;)

 

for (a=0;a<10;a++)
    {
        for(b=0;b<10;b++)
        {
            if(a!=b)
            {
            if(vetor[a]==vetor)
            {
            vetor=0;
            quant[a]++;
            }
            }
        }
    }
    for (e=0;e<10;e++)
    {
    if (vetor[e]!=0)
    {
        cout<<vetor[e];
        cout<<quant[e];
    }  
    }
return 0;
}

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

#include<iostream>
using namespace std;
int main()
{
    int vetor[10],a,b,c,d,quant[10],e;
    
    a=0;
    b=0;
    c=0;
    d=0;
    for (d=0;c<10;c++)
    {
        vetor[d]=0;
        quant[d]=0;
    }
    
    for (c=0;c<10;c++)
    {
        cin>>vetor[c];
    }
    
    for (a=0;a<10;a++)
    {
        for(b=0;b<10;b++)
        {
            if(a!=b)
            {
            if(vetor[a]==vetor)
            {
            vetor=0;
            quant[a]++;
            }
            }
        }
    }
    for (e=0;e<10;e++)
    {
    if (vetor[e]!=0)
    {
        cout<<vetor[e];
        cout<<quant[e];
    }  
    }
return 0;
}

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

Visitante
Este tópico está impedido de receber novas respostas.

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