Autor
|
Tema: calcular moda c++ (Leído 21,354 veces)
|
indict
Desconectado
Mensajes: 78
|
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. #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
Mensajes: 3.158
I'Love...!¡.
|
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. 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; }
#include <iostream> #include <map> using namespace std; int main(){ map<uint32_t, uint32_t> cantMap; map<uint32_t, uint32_t>::iterator maxEdad; uint32_t cantPersonas, edad; cout << "introduzca el numero de personas" << endl; cin >> cantPersonas; cout<<"introduzca las edades"<<endl; for (uint32_t i = 0; i < cantPersonas; ++i) { cout << "Edad Numero: " << i << endl; cin >> edad; cantMap[edad]++; } maxEdad = cantMap.begin(); /** Calcular moda con un For mira este enlace y a ver si se te prende el foco: http://www.cplusplus.com/reference/map/map/begin/ */ cout << maxEdad->first << " => " << maxEdad->second << endl; cin.sync(); cin.get(); return 0; }
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
Mensajes: 1.314
|
....................................................
La moda es el elemento que más veces se repite en el vector.
Y sin recurrir a la librería map:#include <iostream> #include<vector> #include<cstdlib> using namespace std; int main(){ int edad,personas,i,j,moda=0,frecuencia; cout<<"introduzca el numero de personas: "; cin>>personas; vector<int>v(personas); vector<int>n(personas); for(i=0;i<personas;i++){ cout<<"Ingrese la edad de la "<<i+1<<" persona: "; cin>>edad; v[i]=edad; for( j = i-1; j >=0 ; j--){ if(v[i] == v[j]){ n[j]++; if(n[j]>moda){ moda=i;frecuencia=n[j]; } } } } cout<<endl<<"Moda= "<<v[moda]<<"=> "<<frecuencia+1<<endl; system("PAUSE"); return 0; }
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
Mensajes: 78
|
Gracias BlackZeroX (Astaroth) por enseñarme la librería map, Gracias leosansan por ayudarme con vectores ¡eres increíble!
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
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
|
|
|
|
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,311
|
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
|
54,830
|
30 Noviembre 2013, 19:31 pm
por EnriqueRodriguezM
|
|
|
Calcular mas de una moda
Programación C/C++
|
acega
|
3
|
5,412
|
23 Marzo 2013, 19:09 pm
por rir3760
|
|
|
Que moda habia antes de la moda hipster?
Foro Libre
|
wholy
|
4
|
4,796
|
25 Junio 2013, 17:21 pm
por el-brujo
|
|
|
Como calcular la media, mediana, y moda
Programación C/C++
|
M-Stewart612
|
2
|
4,458
|
1 Noviembre 2018, 04:03 am
por M-Stewart612
|
|