Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Clase para abstraer Maximos/Minimos - Corday

Iniciado por ethernet, 12 de Enero de 2003, 04:17:00 PM

« anterior - próximo »

ethernet



    Utilidad para albergar "numeros" que pueden tener minimo y maximo, por

    ejemplo un sistema de particulas tiene que crear particulas con valores

    aleatorios para el color digamos entre 0 y 255.







/*



CMinMax.h



*/





#pragma once



#include "Types.h"





template <class T> class CMinMax

{

private:



//

//members

//

T m_Min;

T m_Max;

 





public:



//

//life

//

CMinMax()

{

 Clear ();

}

CMinMax (T tMin, T tMax)

{

 m_Min = tMin;

 m_Max = tMax;

}

~CMinMax()

{

}







//

//operators

//

inline bool operator == (const CMinMax <T> &minmax)

{

 return (m_Min == minmax.m_Min && m_Max == minmax.m_Max) ?



true : false;

}

inline bool operator != (const CMinMax <T> &minmax)

{

 return (*this == minmax) ? false : true;

}



//

//operations

//

inline CMinMax <T>& operator = (const CMinMax <T> &minmax)

{

 m_Min = minmax.m_Min;

 m_Max = minmax.m_Max;

 return *this;

}



inline void Clear (void) { m_Min = T(); m_Max = T(); }



inline void SetMinMax (const T min, const T max) { m_Max = max;



m_Min = min; }



inline T GetRange(void) { return(T)(abs((int)(m_Max-m_Min))); }



inline T GetRandom (void)

{

 return (T)(m_Max-m_Min) > 0 ? rand ()%(int)(m_Max-m_Min) +



m_Min : rand ()%(int)(1) + m_Min;

}



};










    Éste código fue enviado por Corday el 9 de enero de 2003  

    Si quieres enviar tu propio código hazlo a  
eth_cotd@lycos.es

    ethernet

    Supongo q esta clase tiene snetido para tipos de datos basicos como float, int , char y algunos como vector, pero para mi clase CSocket no creo q tenga mucha utilidad.

    Me gusta mucho tu organizacion de codigo, clara y limpia :DDD


    saludos

    Mars Attacks

                                    ¿Qué es #pragma once?                                

    NeLo

                                    #pragma once

    es para indicar al compilador que incluya el header sólo una vez.

    Saludos.                                
    Drowning deep in my sea of loathing

    ZeruGiran

                                    No es standar, hay quien frefiere seguir usando

    #ifndef __maxmin__
    #define __maxmin__

    // Codigo

    #endif                                

    Grugnorr

                                    En VisualC++ #pragma once acelera el tiempo de compilación de un proyecto.

    #pragma once hace que no se abra ese fichero si ya ha sido añadido a la compilación.... los #def hacen que se abra y no incluya nada, y se cierre. En un proyecto muy grande(o con muchas dependencias físicas) puede reducir mucho el tiempo de compilación

    PD: Eso es lo que recuerdo de no sé donde, algo será del Lakos(Large-Scale C++ Software Design) y el resto de leer por ahí                                
    hat the hells!

    ethernet

    Independientemente de las ayudas del compilador en effective c++ explica como reducir las dependencias entre archivos y q la compilacion/recompilacion sea mas eficiente.

    saludos

    Grugnorr

                                    Ya, y en el Lakos.

    Pero partiendo de que hayas cuidado las dependencias físicas, en Visual C++ con el #pragma once  en un programa grande te compilará más rápido. Se puede meter en un macro ....

    #define HEADER_BEGIN(HeaderName) { #ifdef_VISUALC++ #pragma / once #else #ifndef_HeaderName##_H  #define _HeaderName##_H}

    #define HEADER_END(HeaderName){#ifndef _VISUALC++ #endif}

    Habría que ver que código distingue cada compilador, pero algo así que sale de mi cabeza justo antes de irme a la cama.

    Todo ésto se puede automatizar fácilmente, en el Visual se podrá. En herramientas CASE tipo Together o Rational Rose es muy cómodo                                
    hat the hells!

    ethernet

    Umh podrias decir algo mas de ese tipo de herramientas? he oido hablar de ellas pero no se para q valen realmente xD

    saludos

    Daventry

                                   
    CitarUmh podrias decir algo mas de ese tipo de herramientas? he oido hablar de ellas pero no se para q valen realmente xD

    Sirven para que te toquen las narices en las prácticas de Ingeniería del Software...

    Bye                                
    img src='http://www.danasoft.com/sig/vipersig.jpg' border='0' alt='user posted image'>

    rrc2soft

                                    Muy buena esa definicion, Daventry, muy buena  :ojo:                                

    ethernet


    synchrnzr

                                    Sí que sirven, pero el Rational cuesta todo lo que pueda cobrar durante mi vida hasta que me jubile. Bueno... tal vez no tanto, pero más o menos... :I

    sync                                






    Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
    Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
    Muchísimas gracias.