Severn 0 Denunciar post Postado Março 31, 2015 O problema é receber um vetor, por exemplo v = {2, 3, 5, 1, 2, 3, 7, 8}, e imprimir a quantidade de valores distintos, que nesse caso é 6, apesar de o vetor possuir 8 valores. Como faço esse código em C++? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 31, 2015 Poste o que vc tentou. Compartilhar este post Link para o post Compartilhar em outros sites
Severn 0 Denunciar post Postado Abril 1, 2015 #include <iostream> using namespace std; int vetor[10010]; // a questão diz que o número de elementos pode chegar a 10010, e não estamos preocupados com memória int main(){ int qtdElementos, qtdRepetidos; // recebendo quantidade de elementos que o vetor terá cin >> qtdElementos; // recebendo valores e colocando no vetor for (int i = 0;i<qtdElementos;i++){ cin >> vetor; } // agora quero verificar a quantidade de posições que possuem valores distintos // não faço idéia de como fazer isso :/ } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 1, 2015 1- A mais básica: usar um segundo vetor no qual você coloca os elementos que nunca foram vistos no primeiro vetor. #include <iostream> using namespace std; int main(void){ int vetor[10010]; int qtdElementos; cin >> qtdElementos; int dup[qtdElementos]; int pos_dup=0; for (int i = 0;i<qtdElementos;i++) { cin >> vetor[i]; for(int j=0; j<pos_dup && dup[pos_dup]!=vetor[i];j++); if(j>=pos_dup) { dup=vetor[i]; pos_dup++; } } cout << pos_dup << endl; return 0; } 2- Utilizando as propriedades dos conjuntos:#include <iostream> #include <set> using namespace std; int main(void) { int vetor[] = {1,6,32,5,7,6,4,2,1,54,3,9,4}; set<int> conjunto (vetor, vetor+13); cout << conjunto.size() << endl; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Severn 0 Denunciar post Postado Abril 1, 2015 #include <iostream> #include <set> using namespace std; int main(void) { int vetor[] = {1,6,32,5,7,6,4,2,1,54,3,9,4}; set<int> conjunto (vetor, vetor+13); //isso aqui vai salvar os números do vetor dentro do set de forma ordenada, correto? cout << conjunto.size() << endl; //isso aqui vai exibir o tamanho do set, correto? return 0; } não consegui visualizar nesse código o numero de elementos distintos.. desculpe-me, mas não entendi muito bem o primeiro código, poderia comentar ele pra mim? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 1, 2015 Lembra das aulinhas básicas sobre conjuntos no colégio? Conjuntos não contem elementos repetidos e não são ordenados. Se vc criar um conjunto a partir de uma lista, ele vai inserir os números apenas 1 vez. Daí é óbvio que o tamanho do conjunto é a quantidade de números do array desconsiderando as repetições.Faz um teste de mesa aí. Roda no papel. Vida de programador também é isso. Compartilhar este post Link para o post Compartilhar em outros sites