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ú

Mensajes - Miseryk

#121
Programación C/C++ / [RESUELTO] Macro o ???
7 Marzo 2014, 19:44 PM
Hola gente, estoy tratando de lograr algo pero no puedo pensarlo en la manera que lo quiero, les explico un poco.

Tengo una variable WORD/DWORD.

Esa variable puede tomar muchos números, como:
#define defvar1 1
#define defvar2 2
#define defvar3 3

entonces, yo podría hacer un switch o un if para comparar si esa variable es defvar1,2 o 3 (tengo más defines, como 35), entonces me gustaría hacer con un macro supongo, para checkear éso, sin importar cuantos defines yo tenga.

Me gustaría ver como podrían resolverlo 1) usando macro o algo para evadir un switch grande o un if grande; 2)o la manera en que lo pensarían.

Gracias (Y)
#122
.NET (C#, VB.NET, ASP) / [AYUDA] C# punteros
26 Febrero 2014, 15:23 PM
Hola a todos, estaba tratando de pasar un código de c++ a c#, busqué en internet la posible solución, aún así no pude resolverlo, es el siguiente:

Edit:
Por cierto, estoy utilizando ésto:
Código (csharp) [Seleccionar]

    using DWORD = UInt32;
    using HRESULT = Int32;
    using WORD = UInt16;
    using ULONG = UInt32;
    using HSERVICE = UInt16;
    using LPVOID = IntPtr;
    using LPBYTE = IntPtr;
    using REQUESTID = UInt32;
    using USHORT = UInt16;
    using BOOL = UInt32;
    using LPSTR = IntPtr;
    using BYTE = Byte;
    using CHAR = Byte;
    using DOUBLE = Double;
    using FLOAT = Single;
    using LONG = UInt32;
    using LONGLONG = UInt64;
    using SHORT = Int16;
    using UINT = UInt32;
    using ULONGLONG = UInt64;


Código (csharp) [Seleccionar]

[StructLayout(LayoutKind.Explicit, Size = 268, CharSet = CharSet.Ansi)]
   public unsafe struct WFSIPMIMAGEREQUEST2
   {
       [FieldOffset(0)]public WORD wImageSource;
       [FieldOffset(2)]public WORD wImageType;
       [FieldOffset(4)]public WORD wImageColorFormat;
       [FieldOffset(6)]public WORD wImageScanColor;
       [FieldOffset(8)]public LPVOID lpszImagePath;
       [FieldOffset(12)]public fixed char Value[256];
   }

[StructLayout(LayoutKind.Explicit, Size = 276, CharSet = CharSet.Ansi)]
   public unsafe struct WFSIPMREADIMAGEIN2
   {
       [FieldOffset(0)]public USHORT usMediaID;
       [FieldOffset(2)]public WORD wCodelineFormat;
       [FieldOffset(4)]public WFSIPMIMAGEREQUEST2** lppImage;
   }


A WFSIPMREADIMAGEIN2 le puse 276 porque está en offset 4 + 268 de la otra estructura = 272 + 4 de otro index pero a null como terminador de los índices.

Por el cual el index 0 tendría toda la estructura y el index 1 sería igual a null.

Código (csharp) [Seleccionar]

WFSIPMREADIMAGEIN2 lpReadImageIn = new WFSIPMREADIMAGEIN2();


pero cuando hago:

Código (csharp) [Seleccionar]

lpReadImageIn.lppImage[0]->wImageSource = 1;


Me muestra como mensaje de error: "Object reference not set to an instance of an object."

Cualquier aporte sería de gran ayuda, gracias.
#123
Y si fuera un picturebox? Funcionaría igual?
#124
Traté de hacerlo todo en el .h, pero es una basura, hay cosas que no se pueden pisar, como las variables static (al menos yo no pude, y lo intenté mucho y busqué mucho en internet, todos siguen la lógica de usar el .cpp....)

PERO PUDE LOGRARLO!

Código (cpp) [Seleccionar]

////////////////////////////////////////////////////////////////////////////////
// Filename: GlobalMisery.h
////////////////////////////////////////////////////////////////////////////////
#ifndef _GLOBALMISERY_H_
#define _GLOBALMISERY_H_

////////////////////////////////////////////////////////////////////////////////
// Class name: GlobalMiseryClass
////////////////////////////////////////////////////////////////////////////////
class GlobalMiseryClass
{
public:
static int Mier**;

GlobalMiseryClass();
~GlobalMiseryClass();

template<typename T> static void deleten(T *&ptr)
{
delete ptr;
ptr = 0;
}

template<typename T> static T Suma(T a, T b)
{
return a + b;
}
};

#endif


Código (cpp) [Seleccionar]

////////////////////////////////////////////////////////////////////////////////
// Filename: GlobalMisery.cpp
////////////////////////////////////////////////////////////////////////////////
#include "GlobalMisery.h"

//Necesito esta mier** para que compile...
int GlobalMiseryClass::Mier** = 0;

GlobalMiseryClass::GlobalMiseryClass()
{

}

GlobalMiseryClass::~GlobalMiseryClass()
{

}


Código (cpp) [Seleccionar]

          #include "GlobalMisery.h"

...

        int* a = new int;

GlobalMiseryClass::deleten(a);

GlobalMiseryClass::Mier** = 3;

         int b;
int c;
int d;

b = 1;
c = 2;

d = GlobalMiseryClass::Suma(b, c);


Gracias por el aporte (Y).
#125
En realidad estoy buscando algo extremadamente fácil que podía hacer en VB6 que era como declarar un módulo y llamarlo así:

Module1.Función()

Algo así, que la clase tenga solamente funciones y variables globales para llamar desde cualquier lado, como RandomNumber, Suma, Resta, blabla, pero no puedo hacerlo funcionar con template<typename T> T Suma(T a, T b) por ejemplo, porque cuando trato de compilar me tira errores que ni idea que són...

Si tengo la estrucura en el .h, al escribirlo en el .cpp se llama sólo? cómo funciona?

Ej:
Tengo GlobalMisery.h y GlobalMisery.cpp

Yo estoy en main.cpp

Si hago un include a GlobalMisery.h, se llama a su vez a GlobalMisery.cpp?

Porque en ese cpp tengo el código de la estructura del .h

El tema de punteros está todo muy lindo, pero con este tema de templates es horrible, yo no lo puedo hacer funcionar :(
#126
Hola a todos, me estaba preguntando cómo podría hacer yo una clase que tenga funciones globales, y que a su vez permita templates ej:

MiClase::Mensaje("hola"); //función común

//Template
a y b = int
MiClase::Suma(a, b);

a y b = float
MiClase::Suma(a, b);

No sé si es mejor una clase o un namespace, para mi es todo de lo mismo *-)

Desde yá muchas gracias.
#127
Cita de: 79137913 en 23 Octubre 2013, 15:56 PM
HOLA!!!

Mi funcion puede verificar los numeros perfectos sin problema, probe con el ultimo que esta aca y lo verifica en menos de 0,1 ms .-

Para que vean que lo que importa es el algoritmo no el lenguaje ;)

Código (vb) [Seleccionar]
Private Function IsPerfect(N As Double) As Boolean
   Dim Sum As Double
   Dim Aux As Double
   Aux = N / 2
   Sum = 1 + Aux
   Do While Aux > 2
       If Fix(Aux / 2) < Aux / 2 Then
           Aux = Aux + 1
       End If
       Aux = Aux / 2
       Sum = Sum + Aux
   Loop
   IsPerfect = (N = Sum)
End Function


Superenme ;)

GRACIAS POR LEER!!!

Mientras estuve tratando de crear un algoritmo, me dí cuenta que esa función retorna mal algunos valores como por ejemplo:

al verificar con el número 2 retorna Verdadero el cual no es perfecto.
al verificar con el número 12 retorna Verdadero el cual no es perfecto.
al verificar con el número 14 retorna Verdadero el cual no es perfecto.
al verificar con el número 24 retorna Verdadero el cual no es perfecto.
etc
#128
Voy a esperar a ver quién más postea algún código mientras mejoro el mio.

Estoy en .NET (solamente por el número que uso para testear la función) utilizando como prueba el número perfecto 2305843008139952128

Con respecto a los resultados en y con:
SO: Windows 7 Ultimate 64 bits
Procesador: Intel(R) Core(TM) i5-3570K CPU @ 3.40Ghz 3.40GHz
Memoria instalada (RAM): 16,0 GB

79137913:
Número: 2305843008139952128
Resultado: True
Tiempo Milisegs: 0,0084 (EL MÍNIMO TIEMPO POSIBLE DE DEMASIADOS INTENTOS)




PD: el mio no lo muestro porque necesito una computadora quántica para que me diga el tiempo que tarda, pero estoy en éso.
#129
Nono, es cierto, me faltó una conversión de tu función a UInt64, el código funciona bien y muy rápido :D :D
#130
Estuve probando ésto en .NET que soporta números muy grandes, y la función que hiciste en números muy grandes retorna True en todos los números, estoy pasándolo a VB.NET para que lo veas mejor.