Programación General > C/C++

 moda en vectores

<< < (2/2)

Checho360:
Te intento explicar un poco lo que hago, ya te aviso que es una explicación muy mala, pero esque no sé explicar tampoco muy bien lo que hago jeje, sobre todo asi por internet; de todas formas espero que te ayuda:


--- Código: C++ ---#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");}      

haddad:
muchisimas gracias, ahora solo me qeda analizar tu detallada explicacion :)
saludos!!

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa