#include <iostream>
using namespace std;
int main(){
/*Lo primero que haremos sera tomar la dimension del vector con el que vamos
a trabajar; con dimension me refiero a numero de elementos que toma el vector,
nada de algebra. */
cout<<"Introduce la dimension del vectorn";
/* Tomamos int n porque la dimension va a ser siempre un entero, nunca va
a ser 2.5 o 1.5 siempre un numero natural*/
int n;cin>>n;
/*Y, por fin, damos la orden de crear un vector reservando la memoria
suficiente y necesaria, es decir n (dimension) */
int A[n];
/*Ahora, pedimos al usuario que nos ingrese los componentes del vector,
por eso le metemos en un bucle for, que se repetirá n veces */
for (int i=0;i<n;i++){
cout<<"Introduce el coef "<<i<<" :n";
cin>>(A[i]);
}
/* Ahora creamos una matriz de 2xn, que nos permitira trabajar de una forma
mas comoda, y con el algoritmo que se me ocurrio es necesaria ademas xd;
esto es, almacenaremos en la fila 1 el numero de veces que se repite el
componente i (con i perteneciente de 0 a n) del vector y en la fila 2
el numero n (componente del vector) en concreto que estamos midiendo*/
int almacenar[2][n];
/* Creamos una variable k que servira para contar el numero de veces k que
se repetira el numero n en concreto */
int k;
/*Ahora ya ejecutamos un bucle con el que rellenamos el vector almacenar;
esto es; primero comenzamos un bucle i para mantener un componente del
vector en concreto fijo y asi poder compararlo con el resto de componentes
que podemos analizar con otro bucle j, despues almacenamos el numero de
veces que se repite en k y por ultimo almacenamos los datos en el vector
almacenar.
Este bucle tiene el problema de que si un componente de A se repite lo
analizara igual y ademas dara un numero de repeticiones k falso. Se podria
solucionar con un break por ejemplo pero bueno tampoco es un programa
que tome tiempo asique supongo que da igual que tarde un poco mas que menos*/
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(A[j]==A[i]){
k++;
}
}
almacenar[0][i]=k;
almacenar[1][i]=A[i];
k=0;
}
/*Con este bucle analizamos el maximo; creo que esta claro; tenemos el
vector almacenar con la primera fila rellenada con el numero de veces
k con que se repite cada componente de A, luego solo hay que mirar cual
de ellos es mayor; si es mayor se pasa al primer componente y por lo tanto
solo hay que comparar con el primer componente, que ira variando*/
k=0;
for(int i=0;i<n;i++){
if(almacenar[0][k]<almacenar[0][i]){
almacenar[0][k]=almacenar[0][i];
almacenar[1][k]=almacenar[1][i];
}
}
/*Por ultimo mostramos el componente 1 de la fila 2 que sera donde se
encuentra el mayor*/
cout<<"La moda es:n"<<almacenar[1][k]<<"n";
system("pause");
}