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

 

 


Tema destacado: Curso de javascript por TickTack


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

Desconectado Desconectado

Mensajes: 7


Ver Perfil
AYUDA CON FUNCION C++
« en: 23 Octubre 2018, 17:52 pm »

tengo un vector con referencias distintas, ejemplo S006,S005 y cada una de ellas varias lecturas, de forma que yo meto una referencia por teclado, y tengo que almacenar las lectura en un nuevo vector, ordenarlo para posteriormente sacar su mediana e imprimirla por pantalla.

tengo un error a la hora creo de las direcciones de memoria y punteros

Código
  1. void Mediana(std::vector<Sensor> &v)
  2. {
  3.  
  4.    std::vector<double> med;
  5.    std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  6.    std::cout <<"~~~~~~~~~~~~~~~   MOSTRAR LA MEDIANA DE LOS VALORES DE UN SENSOR   ~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  7.    std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  8.  
  9.    std::string refMediana;
  10.    std::cout <<"\t Introduzca la cadena de referencia del sensor que desee: ";
  11.    std::cin>> refMediana;
  12.    std::cout<<std::endl;
  13.  
  14.    double mediana;
  15.  
  16.    int num_elements=med.size();
  17.    int elemento_mediana;
  18.  
  19.    for(auto s:v)
  20.        if(refMediana==s.referencia)
  21.            med.push_back(s.lectura);
  22.  
  23.    if(num_elements%2!=0)
  24.        elemento_mediana=num_elements/2;
  25.  
  26.    std::sort(med.begin(),med.end(),comparaValores);
  27.    mediana=med[elemento_mediana];
  28.  
  29.    std::cout <<"\t La mediana de los valores captados por el sensor "<< refMediana << " es "<< mediana;
  30.    std::cout<<std::endl;
  31. }
  32.  


« Última modificación: 23 Octubre 2018, 18:41 pm por DVD116 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: AYUDA CON FUNCION C++
« Respuesta #1 en: 25 Octubre 2018, 22:38 pm »

¿Qué error?

Y en cuanto al código, comentar que la mediana... no necesitar hacer el if ese. Simplemente, hazla siempre.


En línea

DVD116

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: AYUDA CON FUNCION C++
« Respuesta #2 en: 25 Octubre 2018, 23:20 pm »

Si el if, era para ser mas exquisito y decirle si el vector era par que coja uno u otro, sabes?

Y el error era rarisimo, pero finalmente en la funcion de comparaValor que es una simple booleana para comparar el mayor y el menor
Código
  1. bool comparaValores(const Sensor &s1,const Sensor &s2)
  2. {
  3.    if(s1.lectura<s2.lectura)
  4.        return true;
  5.    else
  6.        return false;
  7. }

Añadiendo ahi el const, ya no me aparecio, y finalmente ya lo resolvi y quedo asi:
Código
  1. oid Mediana(std::vector<Sensor> &v)
  2. {
  3.    std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  4.    std::cout <<"~~~~~~~~~~~~~~~   MOSTRAR LA MEDIANA DE LOS VALORES DE UN SENSOR   ~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  5.    std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
  6.  
  7.    std::string refMediana;
  8.    std::cout <<"\t Introduzca la cadena de referencia del sensor que desee: ";
  9.    std::cin>> refMediana;
  10.    std::cout<<std::endl;
  11.  
  12.    std::vector<Sensor> miVector;
  13.    for(auto s:v)
  14.        if(refMediana==s.referencia)
  15.            miVector.push_back(s);
  16.            //std::cout << "\t \t " << s.getLectura()<< std::endl << std::endl;
  17.  
  18.    std::sort(miVector.begin(),miVector.end(),comparaValores);
  19.    auto mediana = miVector[miVector.size()/2];
  20.    std::cout <<"\t La mediana de los valores captados por el sensor "<< refMediana << " es "<< mediana.lectura;
  21.    std::cout<<std::endl;}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda en una función
Programación Visual Basic
karmany 0 1,213 Último mensaje 6 Febrero 2006, 00:14 am
por karmany
ayuda con la funcion Do Until
Programación Visual Basic
kakinets 5 2,388 Último mensaje 24 Marzo 2006, 15:11 pm
por karmany
Funcion en PHP ..ayuda..!
PHP
SoFtDrAkE 0 1,420 Último mensaje 21 Abril 2007, 23:40 pm
por SoFtDrAkE
[Ayuda] Función IF
Programación Visual Basic
Servia 6 1,908 Último mensaje 15 Diciembre 2007, 18:22 pm
por Spider-Net
Como llamar a una funcion dentro de otra funcion. Una ayuda urgentemente porfavo
Programación C/C++
LobateZZZ 1 10,198 Último mensaje 14 Abril 2013, 03:07 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines