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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 125
201  Programación / Programación C/C++ / Re: Cambio en billetes y monedas en C++ en: 2 Octubre 2014, 00:06 am
No tiene sentido que uses tantas variables... las variables se pueden reutilizar, sobretodo si los resultados que almacenan son temporales y si no cambia el concepto del dato que estás almacenando en dicha variable. No te hace falta tener sobraA, sobraB, sobraC, .... puedes reutilizar "sobra".

Código
  1. sobraG=cambio%1;
  2. monedaD=sobraG/1;

Cualquier número módulo 1 da como resultado 0... la razón es que cualquier número es divisible entre 1 y la división es exacta, por lo que el módulo SIEMPRE es cero. Además, siguiendo la secuencia de tu algoritmo, ese %1 debería ser un %2, ya que el módulo se supone que lo estás calculando sobre el valor de la moneda o billtete anterior, que en este caso es 2, no 1.

Además X / 1 = X SIEMPRE también, por lo que puedes ahorrarte también la división.

la operación es 20/200 lo cual da como resultado 0.1, que es un decimal y las variables con las que trabaja el programa son de tipo entero, así que si no me equivoque hasta ahora, ahí debería de dar error.

Eso no da error. Si tu haces

Código
  1. int resultado = 20/200;

resultado acaba almacenando el valor 0, la parte decimal se ignora al tratarse de números enteros.
202  Programación / .NET (C#, VB.NET, ASP) / Re: Programa para C# en: 1 Octubre 2014, 22:27 pm
Creo que lo único que hay para C# en linux es el proyecto MONO... pero no se si está disponible para tu sistema operativo.

PD.: este foro es de C y C++... el de C# es este
203  Programación / Programación C/C++ / Re: Como generar numeros aleatorios pares? en: 30 Septiembre 2014, 16:37 pm
Y si no te apetece tener que hacer cálculos en plan... necesito obtener pares de 0 a 50, por lo que tengo que reducir el rango de "rand" a 25... puedes simplemente poner a '0' el bit de menor peso del número obtenido:

Código
  1. int numero = ( rand( ) % 51) & 0xFFFFFFFE;

Esta versión te devuelve siempre un número par dentro del rango [0,50]. Como el número 0xFF... es un poco feo, puedes hacer uso de la librería limits.h para dejarlo un poco más correcto:

Código
  1. int numero = ( rand( ) % 51 ) & ( UINT_MAX - 1 )

En este caso, UNIT_MAX contiene el número más alto que se puede almacenar en un 'unsigned int'... dado que el 'unsigned int' ocupa exactamente lo mismo que un 'int' y, además, 'unsigned int' no necesita bit de signo, UINT_MAX es equivalente (en 32 bits) a 0xFFFFFFFF... si a ese número le restamos uno ya tenemos una máscara que es capaz de eliminar el bit que hace que los números sean impares.
204  Programación / Programación C/C++ / Re: Problema con división aleatoria en c en: 29 Septiembre 2014, 12:34 pm
Primero, como ha dicho BlackM4ster, mira a ver si estás haciendo las divisiones entre enteros... una división entre dos enteros no te va a dar decimales.

Y segundo, si usas float o double has de tener en cuenta que hay divisiones que van a tener infinitos decimales, por lo que tendrás que encontrar la forma de recortar esos decimales... en el caso de float recuerda que la precisión ronda los 6 dígitos (se pueden llegar a 7 pero yo no apuraría tanto), en el caso de double, la precisión se eleva a 15 dígitos.
205  Programación / Programación C/C++ / Re: Acceso a mienbros no estaticos de clase a traves de estaticos en: 26 Septiembre 2014, 08:26 am
La línea que has puesto:

Código
  1. std::cout << POO::MetodoEstatico( )->dato( );

Se descompone en estas otras líneas de código:

Código
  1. Prueba* temp = POO::MetodoEstatico( );
  2. int valor = temp->dato( );
  3. std::cout << valor;

Luego, efectivamente, primero se accede a "MetodoEstatico". Este método devuelve un puntero a un objeto de tipo "POO". Después se recupera el valor devuelto por el método "dato" de dicho objeto y, finalmente, se imprime el valor en pantalla.
206  Programación / Programación C/C++ / Re: Duda de novato. en: 25 Septiembre 2014, 17:23 pm
Uso Dev C++, no se si tendrías otro compilador que me recomendaras?

Nota aclaratoria: Dev C++ no es un compilador, es un IDE (Entorno de desarrollo integrado). Los IDE están preparados para automatizar ciertas tareas, de tal forma que, por ejemplo, compilar sea tan sencillo como darle a un botón. Dev C++ creo que viene con el compilador mingw... que es un buen compilador... ahora bien, Dev C++ es un entorno que creo que lleva varios años sin mantenimiento, por lo que la versión de tu compilador será bastante antigua. Funcional... pero antigua.

Hoy en día tienes IDE bastante buenos, potentes y gratuitos. Yo quizás me decantaría por uno de los siguientes:

* code::blocks: Uno de los más conocidos. Es mucho más completo que el IDE que usas actualmente, aunque el echo de tener tantas opciones hace que manejarlo al principio pueda ser un poco complicado... pero con un poco de paciencia te haces con el. Uno de sus instaladores para Windows instala también una versión de mingw.

* QtCreator: El entorno es más sencillo que Code::blocks, la pega es que te instala el paquete de Qt y eso puede llegar a ocupar algún giga de disco. Qt es un framework que abarca desde interfaz gráfica de usuario a tratamiento de ficheros, sockets, hilos... ahora que si no lo vas a usar puede que no merezca la pena instalarlo.

Ambos entornos pueden trabajar con diferentes compiladores: mingw, msvc, ...

Todo es cuestión de probar y trastear :)
207  Programación / Programación C/C++ / Re: Acceso a mienbros no estaticos de clase a traves de estaticos en: 24 Septiembre 2014, 16:41 pm
Bienvenido al foro.

En primer lugar, sería conveniente que editases el mensaje y decorases el código con las etiquetas GeSHi para mejorar su legibilidad.

Dicho esto, vamos a intentar resolver tu duda.

Vamos a simplificar el entorno. Imagina que tenemos esta clase:

Código
  1. class POO
  2. {
  3.  public:
  4.  
  5.    int dato( );
  6.  
  7.    static POO* MetodoEstatico( );
  8. };

con esta clase tu podrías tener un código tal que:

Código
  1. std::cout << POO::MetodoEstatico( )->dato( );

Y la pregunta es ¿Por qué? ¿Cómo funciona? Muy sencillo.

Si te fijas, el método estático devuelve un puntero a una clase de tipo POO, lo que estás haciendo es recuperar ese puntero y acceder a los miembros de la instancia apuntada por dicho puntero. El código que te he puesto antes se puede descomponer para facilitar su lectura

Código
  1. POO* puntero = POO::MetodoEstatico( );
  2. std::cout << puntero->dato( );

Este tipo de estructura se usa mucho al programar Singleton, que sirve para asegurarse de que sólo existe una instancia de una clase concreta... una forma de implementar un sigleton es la siguiente:

Código
  1. class Singleton
  2. {
  3.  public:
  4.  
  5.    int dato( )
  6.    { return _dato; }
  7.  
  8.    static Singleton* Instance( )
  9.    {
  10.      static Singleton* instance = new Singleton( );
  11.      return instance;
  12.    }
  13.  
  14.  private:
  15.  
  16.    // Los constructores son privados para impedir que se creen nuevas instancias
  17.    Singleton( )
  18.    { _dato = 1; }
  19.  
  20.    // El constructor copia no hace falta implementarlo, con declararlo como privado vale
  21.    Singleton( const Singleton& );
  22.  
  23.    // Al operador de asignación le pasa lo mismo, no hace falta implementarlo.
  24.    Singleton& operator=( const Singleton& );
  25. };

Obviamente, desde un método estático no se pueden llamar a miembros no estáticos de la clase, el siguiente código no compila:

Código
  1. class POO
  2. {
  3.  public:
  4.  
  5.    int dato( )
  6.    { return _dato; }
  7.  
  8.    static int MetodoEstatico( )
  9.    { return dato( ); }
  10. };

No se si con esto he resuelto tu duda, espero que sí.

Un saludo.
208  Programación / Programación C/C++ / Re: Dudas programación en C en: 24 Septiembre 2014, 13:45 pm
Código
  1. char nombre, apellidos;

Si tu intención es almacenar cadenas de caracteres tienes que usar buffers. Un char, a secas, únicamente puede almacenar un carácter... una cadena de caracteres, como su propio nombre indica, es una agrupación de varios caracteres:

Código
  1. char nombre[20], apellidos[20];

Si sabes que el nombre no va a pasar de 3 caracteres y los apellidos de 15 puedes apurar el uso de memoria al máximo:

Código
  1. char nombre[4], apellidos[16];

Esto es porque las cadenas de caracteres SIEMPRE acaban con el carácter nulo, luego necesitas añadir uno a la longitud máxima prevista en la cadena.

Un saludo.
209  Programación / Programación C/C++ / Re: Ayuda obtener permisos administrador en: 23 Septiembre 2014, 22:42 pm
Bueno el mensaje de windows es que si permitas al programa editar el equipo, esto lo hace cualquier programa o juego no tiene porque infectarte.

Cierto, pero si alguien quiere instalar malware en tu ordenador, o lo consigue adjuntar a alguna distribución de algún producto que estés buscando... en cuyo caso se instalará sin que te des cuenta pensando que únicamente estás instalando el programa que querías... o aprovecha vulnerabilidades y fallos en tu sistema operativo para colarse sin que te des cuenta y en el momento más inesperado (navegando por internet, abriendo un correo electrónico, .... ) en este caso dudo mucho que veas una alerta de windows.
210  Programación / Programación C/C++ / Re: Ayuda obtener permisos administrador en: 23 Septiembre 2014, 21:11 pm
Y alguien sabe como pedir permisos de administrador en tiempo de ejecución ?

Si quieres meterte en un sistema sin permiso te toca forzar cerraduras... no pedir permiso.

Yo creo que la mayoría de los usuario dan permiso a cualquier programa.

Aun así encontrarás pocos virus que te avisen de que te van a infectar
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines