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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 [195] 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 ... 401
1941  Programación / Programación C/C++ / Re: Como funciona un arreglo o vector? en: 24 Agosto 2015, 20:52 pm
En memoria, un array es un conjunto de elementos colocados uno delante de otro.
Al hacer "array[ x ]", accedes a la posición X en memoria. Ese X es un entero, que puede ser una constante, una variable, o el retorno de una función, mientras sea un entero.

También puedes crear un array de tamaño dinámico así:

Código
  1. int *array = (int*)malloc(sizeof(int)*5);


Como dato:
Código
  1. int array[5];
  2. *(array + 2*sizeof(int)) == array[2];

Tengo dificultades para comprenderlo la verdad, si no hay ninguna posicion que se llame indice por ejemplo porque no existe, entonces que pinta el array ?

Visto lo anterior, verás que, al acceder a una posición de memoria inexistente, 1 de 2: o da error, o muestra/sobreescribe memoria que tendrá valores teóricamente desconocidos.
1942  Programación / Programación General / Re: Aprender programación en: 24 Agosto 2015, 15:30 pm
http://www.minidosis.org/
C++, uno de los lenguajes que más te servirán.
1943  Programación / Programación C/C++ / Re: Detener thread en C++ en: 24 Agosto 2015, 13:32 pm
El código es incorrecto. Le tienes que pasar el bool como referencia, sinó tendrá un valor inmutable.

Código
  1. thread ok(trabaja, &on, a);
  2.  
  3. trabaja(bool *on, string a)

o


Código
  1. thread ok(trabaja, ref(on), a);
  2.  
  3. trabaja(bool &on, string a)

"ok.get()"? "ok.join()"
1944  Programación / Programación C/C++ / Re: Mejorar sintaxis. en: 24 Agosto 2015, 13:29 pm
Por cierto los vectores son lo mismo que un array?
Si te refieres a "vector" dentro del lenguaje, es de C++.

El problema de ese código, es que creas el array, pero no lo usas.

Lo importante de un array, es que se puede iterar por él. Se puede acceder a sus elementos en un bucle, cosa que con variables diferentes no puedes:
Código
  1. int i, array[10];
  2. for(i=0; i<10; i++)
  3.    printf("%i", array[i]);

Si quieres implementar un array en ese código, haz un bucle que encuentre el número más grande.
1945  Programación / Programación C/C++ / Re: duda con cin.ignore() en: 24 Agosto 2015, 13:25 pm
El problema de "cin<<", es que deja saltos de linea en el buffer de entrada sin leer. Cuando tratas de usar getline, coge esos saltos de linea, y no te deja meter datos. Con "cin.ignore()", eliminas esos saltos de linea.

Para leer en consola, te recomiendo usar siempre, salvo casos especiales:
Código
  1. string line;
  2. getline(cin, line);

De ese modo, siempre obtendrás una cadena, y el buffer será limpiado correctamente.

Ahora bien, en caso por ejemplo, de que quieras interpretar la cadena como un entero, tienes las funciones:
Código
  1. int i = stoi(line); // String to int
  2. unsigned long ul = stoul(line); // String to int
  3. long long ll = stoll(line); // String to long long
  4. float f = stof(line); // String to float
  5. double d = stod(line); // String to double
  6. long double ld = stod(line); // String to long double

Son de la librería <string>. Aquí puedes verlas todas: http://www.cplusplus.com/reference/string/

De este modo, utilizas siempre getline, y evitas utilizar cin<< y cin.ignore.
1946  Programación / Programación C/C++ / Re: Conversión tipos float a U_int8 en: 24 Agosto 2015, 00:15 am
Lo ideal es que hagas eso para enviarlo, y luego, puedes utilizar Float.intBitsToFloat(int bits)

Esa función transforma un entero de 4 bytes (la cadena de bytes), a float.
Tendrías que transformar los 4 bytes que recibes en Java a un int.
Esto último lo puedes hacer rápido con ByteBuffer:
Código
  1. ByteBuffer bb = ByteBuffer.wrap(array); // array = 4 bytes float
  2. // bb.order(ByteOrder.LITTLE_ENDIAN);
  3. int n = bb.getInt();

"Little endian" y "big endian" son las formas de las que se guarda en memoria los datos, sin ir más lejos.

La linea comentada "order()", depende de si utilizas LITTLE_ENDIAN o BIG_ENDIAN. Por ejemplo, Windows utiliza little-endian. Bueno, solo puede ser LITTLE_ENDIAN y BIG_ENDIAN, en el peor de los casos, prueba y averigua cual es xD
1947  Programación / Programación C/C++ / Re: Conversión tipos float a U_int8 en: 23 Agosto 2015, 23:02 pm
En cuanto multiplicas un float, puede perder precisión, o puede perder valores en caso de que se salga del máximo.

Pero, ¿para qué multiplicarlo?
¿Qué quieres hacer con ese float?
Si haces:
Código
  1. float fl = 4.56;
  2. char * floatBytes = &fl;

Tendrás en "floatBytes" un arreglo de 4 chars, que serán los valores del float en memoria. Luego ya si quieres, los copias o haces lo que quieras con ellos.

Pero... ¿Qué pretendes hacer?
1948  Programación / Programación C/C++ / Re: Beep desde thread, new + delete en: 23 Agosto 2015, 19:04 pm
Código
  1. new int(2)
Eso es para crear 1 int inicializado a 2.

Código
  1. new int[2]
Así es.


Y bueno, del segundo código comentar, que no aseguras de ningún modo que la variable 'c' seguirá existiendo cuando el thread acceda a ella.
1949  Programación / Programación C/C++ / Re: duda con cin.ignore() en: 22 Agosto 2015, 13:40 pm
Lo mejor que puedes hacer es no combinar el operador "<<" con "getline".
Utilizar siempre getline es la mejor solución.
1950  Foros Generales / Sugerencias y dudas sobre el Foro / Re: (Sugerencia) Añadir un nuevo foro en el apartado de Foros Generales en: 21 Agosto 2015, 14:48 pm
Podría estar bien pero, no se ven muchas preguntas sobre matemáticas...
Páginas: 1 ... 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 [195] 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 ... 401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines