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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 [243] 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 ... 287
2421  Programación / Programación C/C++ / Re: El mecanismo de static_assert(); en: 15 Junio 2019, 23:29 pm
Estas haciendo deducciones inventándote cosas. Eso de tiempo de edicion, evaluación mientras escribes código, tiempo de build...
Solo tienes comprobación en tiempo de ejecución. Y comprobación en tiempon de compilación.

Cuando una condición se comprueba en tiempo de compilación quiere decir que mirará el valor que le has puesto. Imagínate este hipotético código:
int bytes = 4;
cout << "Introduce los bytes a comprobar";
cin >> bytes;
static_assert(sizeof(int) == bytes, "Su sistema no es de 64bits");

Al ejecutarse ese código en tiempo de compilación, quiere decir que static_asert comprobará 4 en la condición. Da igual que el usuario cambie el valor de la variable durante la ejecución del programa porque la sentencia ya se comprobó cuando se compiló el código. Eso es "En tiempo de compilación".

Si se comprobase en tiempo de ejecucción, la expresión se evaluaría después de que el usuario pusiese el valor de la variable.

Es así de sencillo. No tiene más complicación.


static_asert se suele usar para no compilar ciertos trozos del programa si ocurre un error.
Por ejemplo yo hago un código e incluyo unas librerías del 2019 de 1gb de tamaño y uso todas las nuevas funciones.
Tu descargas mi código y lo compilas con tus librerías sin actualizar del 2018.
El compilador va a tardar un buen rato en buscar en la librería las funciones para 10 o 20 minutos después darse cuenta de que no existen esas fuciones en la librería. Asique perderías 20 minutos para nada y no sabrías cual es el problema.

Si yo fuí previsor, podría utilizar un static_asert para comprobar la versión de la librería y ahorrarte 29 minutos de tiempo para nada. Ejemplo:
#include "libreria.h"
static_assert(libreria::Version < 2019,  "No estás usando la libreria2019. El programa no compilara. Actualiza en www.libreria.inv/last-version para utilizar el programa);

También puedes usarlo para que te avise al compilar si has hecho algo mal.
Para forzar números aleatorios y todo lo que se te ocurra.

Podría forzar a compilar con un número aleatorio, y como una vez compilado el programa no se volverá a usar un número aleatorio, no dará problemas ese ejecutable. Y podras hacer por ejemplo varios ejecutables con números de serie aleatorios.

int miVariable= estaFuncionRetornaUnIntAleatorioEntre0y100();

static_assert(miVariable>50, "El numero no es mayor que 50, intenta compilar otra vez");
2422  Foros Generales / Noticias / Re: Microsoft: Edge para Linux es algo «que queremos hacer» en: 15 Junio 2019, 22:17 pm
Puaah, el kernel de windows debe ser una pocilga y un coladero de cuidado.
No puden publicarlo. El caos que se montaría por lo agujeros de seguridad que afectaría a millones, las críticas, los plagios...

Solo por el peso de los sistemas se puede hacer uno una idea. Parece que no podían tocar el nucleo sin que dejase de funcionar medio sistema. Y se dedicaron a meter software por encima para trabajar con lo que ofrecía el nucleo y mejorar los resultados.
Eso es una bola de nieve insostenible, cada vez hacen falta más capas, y como todo está montado sobre el nucleo, no se puede mejorar sin cargarse 20 sistemas de los cuales dependen otros 1000.

Asique ahora abrazan al opensource porque ya sale más rentable reconstruir esas capas en un kernel opensource haciéndolas independientes del nucleo que seguir destripando un sistema tan complejo que cada vez será más y más pesado.

A mi me gustaría que proponiesen algo inovador 100% suyo con su tecnologia.
Windows va a mejorar mucho pero ya no va a ser windows. Va a ser Win Linux o Wubuntu, Lindows, Winlux o cualquier cosa así.

Algún día lo publicarán cuando no rueden cabezas por la empresa y ya no quede nadie de eaa generación en la que se desarrollo.

2423  Foros Generales / Foro Libre / Re: El ataque a dos petroleros con carga japonesa en Ormuz dispara el precio del cru en: 15 Junio 2019, 21:55 pm
Qué buena la foto JAJAJA
2424  Foros Generales / Foro Libre / Re: El ataque a dos petroleros con carga japonesa en Ormuz dispara el precio del cru en: 15 Junio 2019, 18:24 pm
Si Iran no tenía nada que ver, que hacían sus marines quitándole bombas a un buque? xD

Por otro lado me parece extraño que ante ataques tan graves en el mar se tomen imágenes de forma tan rápida. No se ametralle a todo lo que esté a la vista, y no se guarde en el cajón la noticia para no mostrar debilidades en tiempo de "guerra".

Dándole vueltas tengo la teoría de que Estados Unidos e Irán son más amigos de lo que quieren aparentar.

Venta de armas, subida del precio del petroleo, joder a los asiáticos y a los indios.

Trump ya ha jugado a esta ambiguedad para lucrarse anteriormente. Salió públicado en diversos medios que se dedicaba a invertir de su dinero personal en empresas de armamento antes de amenazar a un país y que eran precisamente esas empresas de armas las que subministraban a sus enemigos, con los que nunca se ha entrado en conflicto directo, solo pura charlatanería.

Esto me parece un teatro cutre de colegio. Pillaron a los Iranies quitando una bomba. Jajajaja. El presidente de Iran afirma que eran iraníes. Trump no hace nada.

Si fuese un ataque real sería ahora mismo el nuevo 11s, se le daría esa repercusión para poder atacar a Iran inmediatamente con apoyo internacional y acabar con todos esos terroriatas que amenazan Japón, Europa y America. Trump estaría blasfemando día y noche y no serían los asiaticos (china y japón) los mayores afectados. Pero vaia, tal y como lo pintan parece que los Iranies son unos bondadosos que no quieren causar problemas, solo jugar a undir la flota para pintar el mar de negro.

Citar
EEUU aumenta sus exportaciones a Irán a pesar de sus propias sanciones
https://mundo.sputniknews.com/economia/201812121084092252-importaciones-exportaciones-estadounidenses-iran-sanciones/

Citar
La semana pasada, Pompeo anunció que no habría más exenciones para los ocho países a los que Washington permitió seguir comprando crudo iraní (China, la India, Italia, Grecia, Japón, Corea del Sur, Taiwán y Turquía) a pesar de las sanciones que entraron en vigor en noviembre.
https://www.lavanguardia.com/internacional/20190508/462120880379/pompeo-viaja-sorpresa-irak-escalada-tension-iran.html
2425  Foros Generales / Noticias / Re: Microsoft: Edge para Linux es algo «que queremos hacer» en: 15 Junio 2019, 17:17 pm
Obviamente el peine con spam no va a poder competir con el peine de 2 euros.
Pero y si el peine fuese gratis porque tiene pintado en el mango www.productosdebelleza.inventado?
Sería molesto? No. Sería rentable? Pues a la larga bastante más que pagar 2 euros. Ya que en la web tendrán secadores, lacas, etc.

Acerca del opensource puedo usar una distro entera ya compilada con sus 40.000 ficheros o 300.000 gracias a que es open source. Puedo aprender a programar gracias a que no está todo el mundo cobrando por un hola mundo.

Si creo un software de calidad estaré encantado de ofrecerlo gratuitamente en mi web junto con un par de anuncios pequeños al lado de la descarga o un link con publicidad no invasiva. Qué la empresa lo venda como quiera. Abrá gente que lo busque gratis y acabe en mi web.
2426  Sistemas Operativos / Windows / Re: Arranque BIOS lento ASUS. Tarda más de 30 minutos. en: 15 Junio 2019, 17:01 pm
Lo primero que probaría es un live cd en un usb booteable.
Pueden ser muchas cosas distintas. Ram, placa, fuente, disco, sistema...

Una vez iniciado el sistema montaría una carpeta del sistema en ram y probaría a escribir un par de archivos grandes en la ram y en el disco. Con eso descartas bastantes posibilidades. Si alguno te va exageradamente lento ya sabes por dónde seguir buscando el problema.

Si todo va normal lo más fácil para seguir comprobando es cambiar piezas una por una e ir probando en cual de ellas está el problema.
2427  Informática / Hardware / Re: GRÁFICA SUENA FUERTE en: 15 Junio 2019, 16:44 pm
60º-70º Temperatura iddle.
70º-75º Temperatura máxima recomendable.
80º-80º+ Temperatura crítica.

Usa GPU-Z para medirlas.
2428  Programación / Programación C/C++ / Re: Probar si varios bits están "seteados" en: 15 Junio 2019, 09:01 am
Es de una traducción al español que estoy haciendo del libro de Apress Learn C++ for game development.

Capitulo 18: La STL. bitset.

El bitset no es exactamente un contenedor, se parece mas a un tipo de dato de STL.
No es compatible con iteradores, bucles for basados en rango o algoritmos STL.
Se utiliza para seguir valores booleanos en un set combinado. El metodo tradicional
para conseguir el mismo resultado son las flags implementadas usando operadores
bitwise y shifts.

Una de las diferencias de bitset con respecto a los contenedores de la STL es que no
necesitas especificar un tipo para el bitset.

Especializando bitset:

#include <bitset>

using namespace std;

namespace
{
   const unsigned int NUMERO_DE_BITS = 5
}

using MiBitset = bitset<NUMERO_DE_BITS>;



Diferentes constructores para bitset:

MiBitset DefaultConstructor; //Inicializa todos los bits a 0.
MiBitset UnsignedLongConstructor{0x17}; //Valor literal
MiBitset StringConstructor{ string{ "11011"} };



Trabajando con bitsets.
Un biset proporciona metodos para realizar un buen numero de operaciones
diferentes. Estos pueden dividirse entre metodos que preguntan sobre el
estado actual del bitset, y metodos usados para alterar los bits.

cout << boolalpha;

cout << "Tamanho del bitset: " << StringConstructor.size() << endl;
cout << "Numero de bits asignados: " << StringConstructor.count() << endl;

cout << "Hay algun bit asignado? " << StringConstructor.any() << endl;
cout << "Estan todos los bit asignados? "<<StringConstructor.all() << endl;
cout << "No hay bits asignados? " << StringConstructor.none() << endl;

for (unsigned int i = 0; i < StringConstructor.size(); ++i)
{
   cout << "Bit " << i << " Valor: " << StringConstructor << endl;
   cout << "Bit " << i << " test: " << stringConstructor.test(i) << endl;
}

El metodo size retorna el valor que le pasamos en la plantilla. El metodo
count retorna el numero de bit a los que le asignamos true.



Hay tres metodos para alterar los valores almacenados en bitset:

StringConstructor.set(1, false);
StringConstructor.set(1);
StringConstructor.set();

StringConstructor.reset(0);
StringConstructor.reset();

StringConstructor.flip(4);  
StringConstructor.flip();


El primer ejemplo utiliza el index de un bit y el valor a asignarle a ese bit.
El segundo utiliza solo un index y asigna 1 al bit correspondiente.
El tercero asigna 1 a todos los bits en el set.
El metodo reset hace lo mismo pero en vez de unos, asigna ceros.
El metodo flip cambia los unos por ceros y los ceros por unos. En caso de
indicarle un index, solo cambiara el bit que se encuentre en ese index.
2429  Programación / Programación C/C++ / Re: Probar si varios bits están "seteados" en: 15 Junio 2019, 08:27 am
Lo puedes hacer de mucha maneras.
Guardas los bit en una cadena. Te inventas otra cadena para comparar. Recorres ambas cadenas con un bucle for y las comparas.
Ejemplo:
Código
  1. string cadena1 = "10001011";
  2. string cadenaParaComprobar = "11111111";
  3.  
  4. for (int i = 0; i < cadena1.size(); ++i)
  5. {
  6.     if (cadena1[i] == cadenaParaComprobar[i])
  7.      {
  8.     cout << "El bit numero " << i << " esta set" <<endl;
  9.      }
  10. }

Puedes usar los operadores bitwise diseñhados para eso de 200 maneras distintas para hacer lo mismo. Se suelen usar para comparar los bits, sumarlos, restarlos, desplazarlos, etc.


Pd: Te pongo ejemplos de los operadores.
Citar
resultado = X & Y;
X= 00001111
Y= 00011000

El resultado será:
00001000

Citar
resultado = X | Y;
X= 00001111
Y= 00011000

El resultado será:
00011111

Citar
resultado = X ^ Y;
X= 00001111
Y= 00011000

El resultado será:
00010111

Citar
resultado = 1 << 1;

El resultado será:
00000010
Es decir, 2 en decimal.

Citar
resultado = 1 >> 1;

El resultado será:
00000000
0 en decimal. Hechó al uno fuera y no había bits para guardar su valor. Se perdió.
2430  Programación / Programación General / Re: Implementa un programa que muestre todos los múltiplos de n entre n y m · n, en: 15 Junio 2019, 04:45 am
Si haces ese programa, va a ser un bucle infinito ya que hay infinitos múltiplos comunes.

Busca en wikipedia el Minimo Comun Multiplo. Te acordará del colegio.

Tienes que hacer todos los múltiplos comunes de (n) y (m.n)

Me extraña que te pida todos los multiplos comunes...

Si un numero es multiplo de otro quiere decir que si multiplicas ese número por el número natural adecuado, vas a llegar a ese valor.

Por ejemplo n * m.
n = 10;
m = 20;
 
resultado = n*m;
Ahora resultado vale 200.
Como sabrías si 200 es múltiplo de por ejemplo 3?
3 * 66 = 198.
3 * 67 = 201.
200 no es multiplo de 3 porque ningún numero multiplicado por 3 da 200.

En vez de ir probando 3*1, 3*2, 3*3, 3*4 ,3*5 hasta que el valor pase de 200 para comprobar si en algún momento alguna operación es igual a 200, lo puedes hacer de una manera más fácil y eficiente.
Divides 200/3.  Si dividiendo 200/3 la division no es exacta, no son múltiplos. Otra manera de expresar esto es: Si dividiendo 200/3 el resto de la divison no es igual a 0, entonces no es múltiplo.

Entonces para comprobar si un número es múltiplo de otro, solo necesitas hacer una division y comprobar el resto.

Una vez comprobado, si el resto es 0, lo muestras en pantalla.

En programación se suele utilizar el operador módulo % para obtener el resto de una division.

Ese operador no hace un porcentaje como estamos acostumbrados en matemáticas. En programación te da el resto. Se usa de la siguiente manera:

RestoDeLaDivision = m % n;

En tu ejercicio harías:

RestoDeDivison = (m*n) % n;

if (Resto de la división == 0)
{
Muestra en pantalla  m*n;
}

En ese caso te mostraría solo 1 número por pantalla en el caso de que este fuese múltiplo.
Para poder mostrar más múltiplos comunes, deberas sumarle 1 a m para que se compruebe el siguiente múltiplo y si este es comun comprobando el resto. Por lo que tendras que meterlos en un bucle.

Lo normal es que solo se busque un número determinado de números comunes, por ejemplo los 10 primeros y no dejar un bucle infinito en pantalla mostrando números cada vez más grandes hasta que te veas forzado a cerrarlo para que no pete el ordenador.

A parte los tipos de datos tienen unos bytes dsterminados de tamaño, asique una vez te pases de ese tamaño se dará la vuelta a los numeros y se empezará a comprobar números negativos. Por lo que deberías utilizar varias cosas extra para evitarlo.

Lo primero sería indicar un tipo de dato que no admita números negativos para guardar el resultado antes de mostrarlo. Siendo este el tipo de dato estandar más largo para almacenar números enteros. En caso de C o C++ unsigned long long nombreDeLaVariable =n*m;

Lo segundo dar tiempo al que observe el programa para ver los resultados por pantalla
Esto lo puedes hacer con la funcion Sleep(milisegundos); incluyendo <windows.h> y siendo milisegundos el tiempo que quieres que se detenga el programa en el bucle. Por ejemplo Sleep(500); para parar medio segundo trás mostrar un resultado.

debes meter todo eso dentro de un bucle while que segun tu pides es infinito.
Lo haces así:
while (1)
{
Aqui metes el codigo que quieras que se repita infinitas veces.
Mete tambien el Sleep(500); dentro del ifpara que no sea un caos de imprimir numeros sin parar.
}

Estoy seguro de que no te piden este tipo de programa. Te has confundido al leer, o al escribir el título. O tu profesor se confundio.

El título del hilo que has creado es de libre interpretación al no situar comas. Das pocos detalles, no has intentado hacer nada poe tu cuenta,
No se sabe si pides:
(n/n) y (m*n)
(n+m) * n
(n*m) y (n*m)
n y (m*n)


Pd: Mi codigo no te resuelve el problema, solo te explica lo necesario para que tu sepas como hacerlo con ejemplos. Piensa bien en que se te pide.  Y hazlo por tu cuenta. Cuando no sepas hacer algo, consultas el post. Antes de nada mira bien que es lo que se te pide y las comas que faltan en el título. Y si como dice el compañero de arriba no te piden el máximo común divisor, o como pienso yo, no te piden una funcion que calcule múltiplos a partir del mínimo común múltiplo. Puedes usar el algoritmo de nuneros primos para resolverlo, o utilizar uno propio haciendo 2 o 3 comprobaciones.

Si fue el profesor quien se equivoco, yo que haría un menu que te de a elegir entre 4 llamadas a funciones.
Una para el maximo comun divisor, otra para todos los divisores comunes, otra para el minimo comun múltiplo y otra para todos los múltiplos comunes.

Si no le haces nada porque no "entendias" no creo que le haga mucha gracia, ni a ti cuando el te de las notas por no esforzarte.

Tampoco dices en que lenguaje es.

Mira libros de programacion por tu cuenta y cursos online.
   


Páginas: 1 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 [243] 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 ... 287
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines