Duda con arrays C++

Iniciado por aRaZer, 23 Octubre 2018, 02:36 AM

0 Miembros y 1 Visitante están viendo este tema.

aRaZer

Hola muy buenas gente, quisiera saber si alguien me podría ayudar con una duda que tengo. Tengo que hacer un programa en el cual se introducirán un total de 31 datos en un arreglo y después el programa tendrá que imprimir el numero de datos que son diferentes al ultimo número ingresado al arreglo; Ejempo: en un arreglo se introducen 8 datos-> 1,1,2,2,3,4,2,1 = entonces en el programa me deberá imprimir el número 5 por qué son 5 números los que son diferentes al ultimo dato del arreglo.

Si alguien me pudiera apoyar diciéndome como es que puedo lograr el conteo de los números que no se repiten el arreglo se lo agradecería bastante, sin mas que decir gracias por su tiempo.

Beginner Web

#1
Con un contador de numeros diferentes al ultimo;
Haces el recorrido y preguntas en cada vuelta si el numero actual es diferente al ultimo ingresado arreglo[ULTIMAPOSICION] y si es diferente incrementas el valor del contador +1;

Código (cpp) [Seleccionar]
int cantidadNumeros(arreglo a)
{
int contador=0;
for(int i=0;i<TAMAÑOARREGLO;i++)
if(a[i]!=a[ULTIMAPOSICION])
contador++;
return contador;
}

7w7

elgilun

#2
La función que necesitas ya existe en la biblioteca estándar, es count_if
https://en.cppreference.com/w/cpp/algorithm/count

#include <iostream>
#include <vector>
#include <algorithm>

auto diferentes(const std::vector<int>& arreglo, int ultimo)
{
// contar los números distintos a "ultimo"
return std::count_if(arreglo.begin(), arreglo.end(), [&ultimo](auto i) { return i != ultimo; });
}

int main()
{
// ejemplo
// en un arreglo se introducen 8 datos:
std::vector<int> arreglo{1, 1, 2, 2, 3, 4, 2, 1};

std::cout << diferentes(arreglo, 1);

}