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 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 54
271  Programación / Programación C/C++ / Re: Problema con realloc funciones y punteros a estructuras [Actualizado] en: 2 Junio 2018, 15:51 pm
Código
  1. ...
  2.  
  3. int main()
  4. {
  5.  
  6.    eMovie* movies = (eMovie*) malloc(sizeof(eMovie));
  7. ...
  8.  
Lo que hagas aquí, se queda ahí. Lo que vengo a decirte, como el caso de otro hilo similar y reciente, es que C no es C++, y la única forma que tienes para modificar el puntero es retornando el nuevo puntero en la función x o usando un puntero global.

Cuando pasas por referencia pasa eso precisamente, que pasas por referencia, y lo único que puedes hacer con eso es modificar el contenido existente en esa dirección, pero no puedes asignar otro puntero, porque lo que tienes en la función es una copia del puntero que usa la misma referencia que le pasas. Por eso, insisto, retorna el nuevo puntero.

Acostumbra a NO hacer eso :
Código
  1. ...
  2.        scanf("%s", (movie + moves)->titulo);
  3.        printf("\nDURACION: ");
  4.        scanf("%d", &(movie + moves)->duracion);
  5.        printf("SALIR? esc:");
  6. ...
  7.  
Usa variables y luego pásalo luego al objeto. Para pasar un char[] a otro char[] usa el memcpy(). Si tienes pensado usar movie como un array, que no sería lo adecuado, úsalo como un array, no uses aritmética de punteros de esa forma. Ejemplo:
Código
  1. ...
  2.        scanf("%s", movie[moves].titulo);
  3.        printf("\nDURACION: ");
  4.        scanf("%d", &duracion);
  5.        movie[moves].duracion=duracion;
  6.        printf("SALIR? esc:");
  7. ...
  8.  

Si vas a retornar el puntero para usarlo como te dije, no liberes el puntero antes de devolverlo (el free() ese dentro de la función x). Libera la memoria en el main o función principal.

Aquí lo mismo que te dije antes...
Código
  1. void y(eMovie* movie, int tam)
  2. {
  3.    for(int i = 0; i < tam; i++)
  4.    {
  5.        printf("\n\nTITULO: %s\n", (movie + i)->titulo);
  6.        printf("DURACION: %d\n", (movie + i)->duracion);
  7.    }
  8. }
  9.  
Usa un array.. ... verás más legible el código.
Código
  1.  
  2.   movie[i].titulo
  3.   movie[i].duracion
  4.  

Y si no, como antes le dije al otro, si quieren trabajar con punteros de forma más flexible y segura usen C++.
272  Foros Generales / Dudas Generales / Re: como puedo adivinar apuestas deportivas en: 2 Junio 2018, 01:59 am
Quien piense que no hay amaños en partidos, carreras, combates, ligas, o cualquier evento deportivo que implique dinero... es un ingenuo.

Y además, tú no estás con los jugadores, con el equipo, con esa gente que participa, no sabes el estado anímico, físico, etc.. como para decir que ganaran o que perderán. Son muchísimos factores que hay que tener en cuenta para poder tener una alta "probabilidad" (eso significa que no es 100% seguro). Con lo cual, y sumado con lo primero que comenté, es imposible acertar. Lo único que puedes tener es "suerte", la misma cuando tiras una balón de espalda y metes canasta (teniendo una idea aproximada de dónde esta la canasta y tirando con la fuerza y el ángulo aproximado)... pero olviden de buscar patrones o buscar fórmulas... si no puedes tocar, pesar y estudiar casi todos los factores que participan en el resultado nunca podrás tener probabilidades reales de acertar.

En las apuestas deportivas, por casos históricos y mediáticos, siempre han estado rodeados de una halo corrupto, de una especie de trampa, que suele darse cuando un resultado se pronostica con ciertas garantías, por ejemplo, un equipo de fútbol con buenos resultados y bien posicionado en la liga, puede caer con el equipo más pelele. Pero se da en muchos casos cuando las apuestas se tornan favoritas para el caballo ganador... eso ocurre porque cuando hay mucho dinero para repartir, alguien interviene o muchos intervienen, para que el efecto sea el contrario pues se hacen apuestas en contra del favorito. Las formas de intervenir pueden ser indirectas o directas, por ejemplo, se compra al árbitro o se le amenaza, otro ejemplo, el entrenador del equipo contrario exige rudeza o violencia para abatir o provocar a los jugadores favoritos lo que harán que terminen haciendo falta y errando, etc..

En resumen, no vale pena, mejor estudia algo, piloto de avión, médico o algo que ganes bastante dinero no tires el dinero en apuestas. Si apuestas hazlo por pasar el rato o si te sobra algo, indudablemente algo ganarás, yo he ganado poco en las apuestas pero lo hago de siglo en siglo, pero hay gente que se le va de las manos y terminan conviertiéndose en verdaderos enfermos ludópatas.... ahí dejo de la cosa.
273  Foros Generales / Dudas Generales / Re: Duda sobre Arduino y firmware en: 1 Junio 2018, 13:36 pm
Así es, si tú programa forma parte de la lógica del dispositivo con un fin específico e interactúa directamente con el hardware se puede entender que es el firmware. Por ejemplo, diseño un circuito para crear un mando a distancia por infrarojos con sus botones y tal, entonces, el programa que usaría es el firmware que permite controlar el mando y darle funcionalidad.

Lo que no hay que olvidar, es que Arduino es una plataforma de desarrollo, todo el conjunto, un circuito que integra un bootloader, compilador, editor y lenguaje (basado en Wiring).

Información que puede interesarte :
https://www.arduino.cc/en/Tutorial/ArduinoISP#toc1
https://www.arduino.cc/en/Tutorial/ArduinoISP
https://www.arduino.cc/en/Hacking/Bootloader
274  Informática / Hardware / Re: duda con hardware de video en: 1 Junio 2018, 13:17 pm
los graficos integrados en los intel son meramente para correr aplicaciones de usuario y video, no realmente para juegos... lo que pasará en este caso es que entre tus 2 graficas colaborarán para hacer como si fueran una sola (no pasará en todos los juegos pero si en muchos del 2010 para acá)... sin embargo si inviertes unos 200$ puedes conseguir una
GTX 1050 que te dará muchisimo más rendimiento

Cierto, yo acabo de pillarme una 1060 GTX por 200 euros, un chollo!! Y un cacharro muy bueno, ligeramente superior a la 1050, aunque si tienes pensando usarla para juegos en 2k o superior mejor opta por una 1060 GTX o para arriba.
275  Foros Generales / Foro Libre / Re: El presi M.Rajoy acorralado en: 31 Mayo 2018, 23:40 pm
Buff programatrix , estás totalmente polarizado(y de laderecha rancia), no me extrañaría que fueras uno de los "¿y qué hay de lo mío?" personaje con compañías influyentes que le permiten conseguir trabajitos para instituciones públicas.

Por desgracia para ti, ni soy de izquierdas, ni soy de derechas, soy ambidiestro, uso la razón... por cierto ¿cuando sugerí o escribí que hay que votar a Podemos? buff fatal chaval... seguro sales a la calle y ves comunistas por todas las partes, persona que se queja del gobierno... comunista!! jajaja que se demora el metro... seguro que es sabotaje comunista!!! que la esposa es infiel... seguro que se dejó camelar por un comunista!! en fin... viva el pan, viva el vino... be water my friend.
276  Foros Generales / Foro Libre / Re: El presi M.Rajoy acorralado en: 31 Mayo 2018, 22:57 pm
Yo pienso, que en España no hay cultura política, toda la peña está polarizada o eres esto o eres lo otro no se ve bien votar a uno y luego votar a otro. Si existiera cultura política nadie en su sano juicio votaría a un partido que incumple sistemáticamente los programas electorales y ano hablemos de tener en sus filas cientos de imputados por corrupción empezando por el mismo presidente, que sería quien debería dar ejemplo.

Lo normal, si queremos ser el mejor país democrático, y estar orgullosos de ser españoles sin avergonzarnos, sería que se votara a partidos nuevos si los ya existentes han repetido y lo han hecho fatal, como es el caso de PP y PSOE. Porque de seguir los mismos lo que estás creando es un cortijo familiar para afiliados del PP y del PSOE... el "¿qué hay de lo mío?".

Por otra parte, la justicia ha quedado doblegada al poder político y ya no se puede hablar de un poder independiente. Ha quedado totalmente comprometido al servicio político, ya no hay garantías de imparcialidad y los indultos mejor no hablar de ellos... en caso de existir un poder judicial imparcial e independiente nunca se habría permitido que una empresa como Indra, imputada por financiación ilegal al PP, pudiera participar en el conteo de votos o en las mismas elecciones.... y ya sabemos como informáticos, lo fácil que es manipular la información digital con unos simples permisos de administrador, no necesitas ni un hacker ruso (esos que no le gustan al PP).

En resumen, España es un país bananero.
277  Programación / Programación C/C++ / Re: Error al guardar imagen PGM P2 en: 31 Mayo 2018, 22:41 pm
Además a mi parecer el código no es bueno, porque encima reserva memoria estática en la misma estructura sin haberlo usado o sin tener nada (tanto para el nombre como los datos, el im). De esa forma está tomando memoria de la pila y es raro que la aplicación no se te rompa al ejecutarla a no ser que hayas modificado el tamaño de esta en el compilador.

Lo normal es que trabajes con punteros, con memoria dinámica. La estructura debería quedar algo así:

Código
  1. ...
  2. typedef struct {
  3. char * nombre;
  4. int comentarios;
  5. int ancho;
  6. int alto;
  7. int escala;
  8. unsigned char * datos;
  9. } IMAGEN;
  10.  
  11. // luego definir un objeto IMAGEN
  12. IMAGEN miImagen;
  13.  
  14. // luego una vez sabes el tamaño, mirando la cabecera, calculas la memoria que necesitas y la reservas
  15. int ancho=320, alto=200;
  16. miImagen.datos = (unsigned char*)malloc(sizeof(char)*(ancho*alto));
  17.  
  18. // luego para recorrer el puntero como si fuera la pantalla haces
  19. miImagen.datos[x*ancho+y]=255;
  20.  
  21. char pixel = miImagen.datos[x*ancho+y];
  22. ...
278  Programación / Programación C/C++ / Re: Duda Arbol en: 31 Mayo 2018, 21:57 pm
El problema es que te has lanzado hacer un árbol binario sin saber mucho de punteros en C. No pases el puntero por la función porque en C es desreferenciada. Mejor retornar el puntero como haces en la función crear() o simplemente trabaja con el puntero globalmente que para eso la haz definido en ese ámbito.

Si quieres trabajar con punteros de forma más flexible y segura entonces ponte con C++  ;)

...Luego con el insertar recursivo ese ten cuidado...
279  Programación / Programación C/C++ / Re: Error al guardar imagen PGM P2 en: 31 Mayo 2018, 12:20 pm
Con el fopen deberías trabajar en modo binario para esas cosas pero en teoría los valores da igual que sean caracteres o numéricos pues eso es simplemente la forma en la que son representados. Los valores internamente se manejan en registros de varios bits (depende de la arquitectura).

http://www.cplusplus.com/reference/cstdio/fopen/
280  Programación / Programación C/C++ / Re: Arboles Binarios en C(Construcción Re cursiva) en: 30 Mayo 2018, 13:14 pm
Pero no pone en lo que muestras que debas usar recursividad para la creación del árbol, sólo te indica el proceso para crearlo y eso puedes hacerlo con una simple iteración (un bucle) y funciones para gestionar el árbol, en las que si podrías usar recursión.

Así por lo primero que leo, los dos primeros puntos, entiendo que cada vez que se crea un nodo, izquierdo o derecho, este se agrega a una pila, que podría ser perfectamente usando un vector(un objeto de c++), por medio de la función push. Luego este puntero, por lo que entendí, se usa para el campo de valor del nodo y se hace un pop una vez se extrae del vector o pila, pero sólo es extraído cuando en el recorrido de la cadena, la que contiene la operación "(9+8...)" encuentra un operador... operador aritmético me imagino, o sea un + * / o lo que sea...

En resumen, mejor usa un bucle y recorre la fórmula carácter a carácter y según el carácter  pues sigues las reglas del ejercicio, como por ejemplo si es un paréntesis derecho o un espacio blanco no hacer nada.

Aunque el ejercicio no tenga ninguna funcionalidad o utilidad práctica, quien vaya a evaluarlo querrá ver un árbol que se ajuste a las reglas del ejercicio.

Y ya para acabar, si no consigues mostrar el árbol completamente es sencillamente porque no has entendido el ejemplo que te puse, que la verdad lo hice lo más sencillo posible para que pudieras entenderlo. La función recursiva simplemente es una de las muchas formas de recorrer un árbol pero con la ventaja de no pasar por el mismo nodo dos veces a costa de comer muchos recursos, pero también puedes usar un bucle e ir creando un mapa para evitar repetir la misma ramificación y saltarte los nodos ya visitados.

Eso si, no espere que te resolvamos el ejercicio con código, sólo te podemos orientar. Si en verdad te gusta la programación y esperas ser un gran programador seguro que lo consigues, y de seguro sentirás una gran satisfacción personal y te ayudará a solucionar en un futuro grandes desafíos algorítmicos. Así que ánimo, si te cuesta comprenderlo haz un dibujo, simula las operaciones con trazas en papel y crea los nodos (como si estuvieras depurando), intenta visualizarlo para que lo comprendas mejor, yo uso esta técnica en algoritmos muy enrevesados.

PD Acuérdate de amputar o podar los nodos cada vez que hagas uno nuevo (con NULL), de esa forma al recorrerlo sabrás donde acaba y además si no lo haces la aplicación puede romperse, porque cuando trabajas con memoria a bajo nivel como en C++ los punteros siempre están sucios y debes gestionarlos tú.
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 54
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines