Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - DVD116

#1
GNU/Linux / Problema al instalar Ubuntu
31 Octubre 2018, 11:57 AM
Tengo un equipo portátil con doble disco, uno principal SSD tipo m.2, y otro secundario HDD, el cual tengo dividido en dos partes.
Me gustaría instalar Ubuntu, en una de estas dos partes del disco HDD, porque ya he probado a hacerlo pero no consigo que inicie. Y sí hice gestor de arranque, seleccionaba Ubuntu se quedaba la pantalla en negro y nunca arrancaba.
#2
Programación C/C++ / AYUDA CON FUNCION C++
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 (cpp) [Seleccionar]

void Mediana(std::vector<Sensor> &v)
{

   std::vector<double> med;
   std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
   std::cout <<"~~~~~~~~~~~~~~~   MOSTRAR LA MEDIANA DE LOS VALORES DE UN SENSOR   ~~~~~~~~~~~~~~~"<<std::endl<<std::endl;
   std::cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<std::endl<<std::endl;

   std::string refMediana;
   std::cout <<"\t Introduzca la cadena de referencia del sensor que desee: ";
   std::cin>> refMediana;
   std::cout<<std::endl;

   double mediana;

   int num_elements=med.size();
   int elemento_mediana;

   for(auto s:v)
       if(refMediana==s.referencia)
           med.push_back(s.lectura);

   if(num_elements%2!=0)
       elemento_mediana=num_elements/2;

   std::sort(med.begin(),med.end(),comparaValores);
   mediana=med[elemento_mediana];

   std::cout <<"\t La mediana de los valores captados por el sensor "<< refMediana << " es "<< mediana;
   std::cout<<std::endl;
}
#3
A traves de un fichero se pide imprimir por pantalla sus datos usando STL o contendores, he hecho este codigo pero da varios errores

MAIN

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <vector>
#include <ctime>
#include "Sensor.h"

using namespace std;

int main()
{
   vector <Sensor> VecDatos;

   if(leeFichero(VecDatos))
   {
       cout << "Referencia" << "\t Lectura" << "\t Fecha y Hora" << endl << endl;
       for(size_t i=0; i<VecDatos.size();i++)
       {
           cout << VecDatos[i];
       }
   }
}


CLASE
Código (cpp) [Seleccionar]
#ifndef SENSOR_H
#define SENSOR_H

#include <vector>
#include <iostream>

enum CodigosError {SUCCESS, ERROR_OPENING_FILE, ERROR_DENOMINATOR_IS_ZERO};

class Sensor
{
   double lectura;
   std::string referencia;
   time_t tiempo;

   public:
       friend void leeFichero(std::vector<Sensor> &v);
       std::istream& operator>> (std::istream &in, Sensor &s):
       std::ostream& operator<< (std::ostream &out, Sensor &s);

};

#endif // SENSOR_H


FUNCIONES

Código (cpp) [Seleccionar]
#include "Sensor.h"
#include <fstream>>

void leeFichero(std::vector<Sensor> &v)
{
    Sensor s;
    std::ifstream FichSensores("datos.txt");
    if(!FichSensores)
        throw ERROR_OPENING_FILE;
    while(FichSensores)
    {
        FichSensores>>s.lectura;
        FichSensores>>s.referencia;
        FichSensores>>s.tiempo;

        if(!FichSensores.fail())
        {
            v.push_back(s);
        }
    }
    FichSensores.close();
}

std::istream& operator>> (std::istream &in, Sensor &s)
{
    in>> s.lectura;
    in>>s.referencia;
    in>>s.tiempo;
    while(!lectura)
    {
        std::cout<<"La entrada no puede ser 0"<<std::endl;
    }
    return in;
}

std::ostream& operator<< (std::ostream &out, Sensor &s)
{
    if(!s.lectura!=0)
    {
        out<<s.referencia<<"\t" <<s.lectura<<"\t"<<s.tiempo<<"\t";
    }
    return out;
}