elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  calcular moda c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: calcular moda c++  (Leído 20,911 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
calcular moda c++
« en: 22 Enero 2013, 17:52 pm »

Hola,

podrías decirme que debo corregir en mi programa para que me calcule la moda de un vector dado,

La moda es el elemento que más veces se repite en el vector.

Código:
#include <iostream>
#include<vector>
using namespace std;

int main(){

int edad,personas,i,j,aux,suma_edad;
int moda,frecuencia,frecuencia_moda;
cout<<"introduzca el numero de personas"<<endl;
cin>>personas;

vector<int>v(personas);
for(i=0;i<v.size();i++){
                        cout<<"introduzca las edades"<<endl;
                        cin>>edad;
                        v[i]=edad;
                       
                        }
//moda

for(i=0;i<personas-1;i++)
for(j=0;j<personas-i;j++)

if(edad[j]>edad[j+1]){
                      aux=edad[j];
                      edad[j]=edad[j+1];
                      edad[j+1]=aux;}
frecuencia=0;
frecuencia_moda=0;
moda=-1;

for(i=0;i<personas-1;i++)
if(edad[i]==edad[i+1])
                       if(++frecuencia>frecuencia_moda){
                                                        frecuencia_moda=frecuencia;
                                                        moda=edad[i];}
                       else frecuencia=0;

system("PAUSE");
return 0;
}
                     


Gracias por la ayuda :)


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: calcular moda c++
« Respuesta #1 en: 22 Enero 2013, 19:56 pm »

Para calcular la MODA puedes usar map<int, int> en lugar de vector<int>... y con una iteración puedes obtener el elemento con mayor cantidad...

edad NO ES UN ARRAY!¡, mejor lee un manual/tutorial/guia al respecto.
Código
  1. int main(){
  2.  
  3. int edad,personas,i,j,aux,suma_edad;
  4. int moda,frecuencia,frecuencia_moda;
  5.  
  6.    cout<<"introduzca el numero de personas"<<endl;
  7.    cin>>personas;
  8.  
  9.    vector<int>v(personas);
  10.    for(i=0;i<v.size();i++)
  11.    {
  12.        cout<<"introduzca las edades"<<endl;
  13.        cin>>edad;
  14.        v[i]=edad;
  15.    }
  16. //moda
  17.  
  18.    for(i=0;i<personas-1;i++)
  19.        for(j=0;j<personas-i;j++)
  20.            if(edad[j]>edad[j+1])
  21.            {
  22.                aux=edad[j];
  23.                edad[j]=edad[j+1];
  24.                edad[j+1]=aux;
  25.            }
  26.    frecuencia=0;
  27.    frecuencia_moda=0;
  28.    moda=-1;
  29.  
  30.    for(i=0;i<personas-1;i++)
  31.        if(edad[i]==edad[i+1])
  32.            if(++frecuencia>frecuencia_moda)
  33.            {
  34.                frecuencia_moda=frecuencia;
  35.                moda=edad[i];
  36.            }
  37.            else
  38.                frecuencia=0;
  39.  
  40.    system("PAUSE");
  41.    return 0;
  42. }
  43.  

Código
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. int main(){
  6.  
  7.    map<uint32_t, uint32_t> cantMap;
  8.    map<uint32_t, uint32_t>::iterator maxEdad;
  9.    uint32_t cantPersonas,
  10.             edad;
  11.  
  12.    cout << "introduzca el numero de personas" << endl;
  13.    cin >> cantPersonas;
  14.  
  15.    cout<<"introduzca las edades"<<endl;
  16.  
  17.    for (uint32_t i = 0;
  18.         i < cantPersonas;
  19.         ++i)
  20.    {
  21.        cout << "Edad Numero: " << i << endl;
  22.        cin >> edad;
  23.        cantMap[edad]++;
  24.    }
  25.  
  26.    maxEdad = cantMap.begin();
  27.  
  28. /**
  29. Calcular moda con un For mira este enlace y a ver si se te prende el foco:
  30. http://www.cplusplus.com/reference/map/map/begin/
  31. */
  32.  
  33.    cout << maxEdad->first << " => " << maxEdad->second << endl;
  34.  
  35.    cin.sync();
  36.    cin.get();
  37.  
  38.    return 0;
  39. }
  40.  

Dulces Lunas!¡.


« Última modificación: 22 Enero 2013, 20:13 pm por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: calcular moda c++
« Respuesta #2 en: 23 Enero 2013, 15:33 pm »

....................................................

La moda es el elemento que más veces se repite en el vector.


Y sin recurrir a la librería map:
Código
  1. #include <iostream>
  2. #include<vector>
  3. #include<cstdlib>
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8.    int edad,personas,i,j,moda=0,frecuencia;
  9.    cout<<"introduzca el numero de personas: ";
  10.    cin>>personas;
  11.    vector<int>v(personas);
  12.    vector<int>n(personas);
  13.    for(i=0;i<personas;i++){
  14.        cout<<"Ingrese la edad de la "<<i+1<<" persona: ";
  15.        cin>>edad;
  16.        v[i]=edad;
  17.        for( j = i-1; j >=0 ; j--){
  18.            if(v[i] == v[j]){
  19.                n[j]++;
  20.                if(n[j]>moda){
  21.                  moda=i;frecuencia=n[j];
  22.                }
  23.            }
  24.        }
  25.    }
  26.    cout<<endl<<"Moda= "<<v[moda]<<"=> "<<frecuencia+1<<endl;
  27.    system("PAUSE");
  28.    return 0;
  29. }
  30.  
Saluditos!,
P.D: Muy interesante la mencionada librería. ;)
« Última modificación: 23 Enero 2013, 16:34 pm por leosansan » En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: calcular moda c++
« Respuesta #3 en: 23 Enero 2013, 16:19 pm »

Gracias BlackZeroX (Astaroth) por enseñarme la librería map, :D

Gracias leosansan por ayudarme con vectores ¡eres increíble! :D

En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: calcular moda c++
« Respuesta #4 en: 24 Enero 2013, 15:04 pm »

mi codigo es por lejos mas largo  :-\...buen code leosansan ;-)
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa que calcula el promedio y la moda. duda con la moda
Programación C/C++
noobc 1 5,073 Último mensaje 27 Mayo 2010, 02:24 am
por h0oke
Calcular moda, mediana, media aritmética, media geométrica de n números en C « 1 2 »
Programación C/C++
ERIK546 13 53,920 Último mensaje 30 Noviembre 2013, 19:31 pm
por EnriqueRodriguezM
Calcular mas de una moda
Programación C/C++
acega 3 5,141 Último mensaje 23 Marzo 2013, 19:09 pm
por rir3760
Que moda habia antes de la moda hipster?
Foro Libre
wholy 4 4,332 Último mensaje 25 Junio 2013, 17:21 pm
por el-brujo
Como calcular la media, mediana, y moda
Programación C/C++
M-Stewart612 2 4,074 Último mensaje 1 Noviembre 2018, 04:03 am
por M-Stewart612
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines