• Viernes 8 de Noviembre de 2024, 19:15

Autor Tema:  moda en vectores  (Leído 2160 veces)

haddad

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
moda en vectores
« en: Sábado 2 de Abril de 2011, 23:17 »
0
muchachos agradezco a todos los que han contribuido a aclararme las dudas
ahora les traigo esto. debo mostrar la moda de un vector. el numero que mas se repite
saludos!!

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: moda en vectores
« Respuesta #1 en: Domingo 3 de Abril de 2011, 00:15 »
0
Me parece que deberías de intentar hacerlo tú y luego ya te ayudamos si no sabes, es la mejor forma de aprender, te doy un ejemplo:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     cout<<"Introduce la dimension del vectorn";
  5.     int n;cin>>n;
  6.     int A[n];
  7.     for (int i=0;i<n;i++){
  8.         cout<<"Introduce el coef "<<i<<" :n";
  9.         cin>>(A[i]);
  10.     }
  11.     /*Ahora calculamos cuantos elementos hay de cada numero*/
  12.     int k=0;int almacenar [2][n];
  13.     for(int i=0;i<n;i++){
  14.             for(int j=0;j<n;j++){
  15.                     if(A[j]==A[i]){
  16.                             k++;
  17.                     }
  18.             }
  19.             almacenar[0][i]=k;
  20.             almacenar[1][i]=A[i];
  21.             k=0;
  22.     }
  23.     /*Ahora miramos el maximo*/
  24.     k=0;
  25.     for(int i=0;i<n;i++){
  26.         if(almacenar[0][k]<almacenar[0][i]){
  27.                                       almacenar[0][k]=almacenar[0][i];
  28.                                       almacenar[1][k]=almacenar[1][i];
  29.                                       }
  30.     }
  31.     cout<<"La moda es:n"<<almacenar[1][k]<<"n";
  32.     system("pause");
  33. }    
  34.  
  35.  

Supongo que hay mil formas mucho mejores de hacerlo pero es lo que se me ocurrio...

Un saludo!!
« última modificación: Lunes 4 de Abril de 2011, 00:38 por Checho360 »

haddad

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: moda en vectores
« Respuesta #2 en: Domingo 3 de Abril de 2011, 22:42 »
0
si te soy sincera... hay muchas cosas que no entiendo :(

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: moda en vectores
« Respuesta #3 en: Domingo 3 de Abril de 2011, 23:03 »
0
Cita de: "haddad"
si te soy sincera... hay muchas cosas que no entiendo :(

Pero que es lo que no entiendes, la sintaxis o el algoritmo??

Si no entiendes la sintaxis se te puede explicar, si es la lógica tampoco te preocupes... con que sepas tu hacer uno tampoco es necesario saber todas las formulas; ya te digo, habra mil formas mejores de  hacer ese programa.

Si me dices igual te puedo explicar algo.

Un saludo!

haddad

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: moda en vectores
« Respuesta #4 en: Domingo 3 de Abril de 2011, 23:33 »
0
si por favor, quedaria enormemente agradecida si me explicaras algo de sintaxis y de logica :)
es que hay muchas cosas nuevas para mi, y yo digo o.O eso de donde salio?? jaja

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: moda en vectores
« Respuesta #5 en: Domingo 3 de Abril de 2011, 23:58 »
0
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++
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     /*Lo primero que haremos sera tomar la dimension del vector con el que vamos
  5.     a trabajar; con dimension me refiero a numero de elementos que toma el vector,
  6.     nada de algebra. */
  7.     cout<<"Introduce la dimension del vectorn";
  8.     /* Tomamos int n porque la dimension va a ser siempre un entero, nunca va
  9.     a ser 2.5 o 1.5 siempre un numero natural*/
  10.     int n;cin>>n;
  11.     /*Y, por fin, damos la orden de crear un vector reservando la memoria
  12.     suficiente y necesaria, es decir n (dimension) */
  13.     int A[n];
  14.     /*Ahora, pedimos al usuario que nos ingrese los componentes del vector,
  15.     por eso le metemos en un bucle for, que se repetirá n veces */
  16.     for (int i=0;i<n;i++){
  17.         cout<<"Introduce el coef "<<i<<" :n";
  18.         cin>>(A[i]);
  19.     }
  20.     /* Ahora creamos una matriz de 2xn, que nos permitira trabajar de una forma
  21.     mas comoda, y con el algoritmo que se me ocurrio es necesaria ademas xd;
  22.     esto es, almacenaremos en la fila 1 el numero de veces que se repite el
  23.     componente i (con i perteneciente de 0 a n) del vector y en la fila 2
  24.     el numero n (componente del vector) en concreto que estamos midiendo*/
  25.     int almacenar[2][n];
  26.     /* Creamos una variable k que servira para contar el numero de veces k que
  27.     se repetira el numero n en concreto */
  28.     int k;
  29.     /*Ahora ya ejecutamos un bucle con el que rellenamos el vector almacenar;
  30.     esto es; primero comenzamos un bucle i para mantener un componente del
  31.     vector en concreto fijo y asi poder compararlo con el resto de componentes
  32.     que podemos analizar con otro bucle j, despues almacenamos el numero de
  33.     veces que se repite en k y por ultimo almacenamos los datos en el vector
  34.     almacenar.
  35.     Este bucle tiene el problema de que si un componente de A se repite lo
  36.     analizara igual y ademas  dara un numero de repeticiones k falso. Se podria
  37.     solucionar con un break por ejemplo pero bueno tampoco es un programa
  38.     que tome tiempo asique supongo que da igual que tarde un poco mas que menos*/
  39.     for(int i=0;i<n;i++){
  40.             for(int j=0;j<n;j++){
  41.                     if(A[j]==A[i]){
  42.                             k++;
  43.                     }
  44.             }
  45.             almacenar[0][i]=k;
  46.             almacenar[1][i]=A[i];
  47.             k=0;
  48.     }
  49.     /*Con este bucle analizamos el maximo; creo que esta claro; tenemos el
  50.     vector almacenar con la primera fila rellenada con el numero de veces
  51.     k con que se repite cada componente de A, luego solo hay que mirar cual
  52.     de ellos es mayor; si es mayor se pasa al primer componente y por lo tanto
  53.     solo hay que comparar con el primer componente, que ira variando*/
  54.     k=0;
  55.     for(int i=0;i<n;i++){
  56.         if(almacenar[0][k]<almacenar[0][i]){
  57.                                       almacenar[0][k]=almacenar[0][i];
  58.                                       almacenar[1][k]=almacenar[1][i];
  59.                                       }
  60.     }
  61.     /*Por ultimo mostramos el componente 1 de la fila 2 que sera donde se
  62.     encuentra el mayor*/
  63.     cout<<"La moda es:n"<<almacenar[1][k]<<"n";
  64.     system("pause");
  65. }    
  66.  
  67.  

haddad

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: moda en vectores
« Respuesta #6 en: Martes 5 de Abril de 2011, 02:26 »
0
muchisimas gracias, ahora solo me qeda analizar tu detallada explicacion :)
saludos!!