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 - avesudra

#41
Cita de: furciorifa en 12 Noviembre 2015, 20:36 PM
Dedicate a otra cosa, quizá la programación no es para tí, o ve vídeos en Inglés, colas está muy fácil, en fin.

Tú humildad brilla por su ausencia, no veo que haces respondiendo mensajes aquí, ya que sabes tanto y todo es tán fácil podrías crear una empresa y ahogarte en ego.


Cita de: RGT en 12 Noviembre 2015, 03:46 AM
He programado cosas en C++ en esta materia, pero nunca nada con Colas y no entiendo ni la pepa, sigo leyendo y eso pero es todo confuso.

Mmmm vale, pero ¿te decían que tenías que implementar el TAD(tipo abstracto de dato) o podías usar el de la STL de C++?

De todas maneras si haces lo que pone ese código, vas a ver que te van a salir todos los números aleatorios que has creado de mayor a menor (por defecto el constructor de la clase priority_queue toma std::less<T> como comparación para insertar los elementos). Es decir que para sacar el mayor tienes que hacer un solo pop y para sacar el menor tendrás que quedarte con el último elemento que salga antes de que la cola se quede vacía.

El problema es que la prioridad de esa cola no está bien de momento, ya que los introduce en orden, pero no los de dos cifras primero y los de 3 después.

Te estoy dando pistillas, pero así cuando tengas que hacerlo otra vez ya sabrás como hacerlo perfectamente. Inténtalo y cuando tengas algo pasas por aquí y lo vemos, si tienes tiempo antes de entregarlo claro.

En cuanto a lo que ha dicho furciorifa, aquí en España solemos decir que "A palabras necias, oídos sordos".

Un saludo.
#42
Programación C/C++ / Re: hola
12 Noviembre 2015, 00:33 AM
Cita de: class_OpenGL en 11 Noviembre 2015, 23:42 PM
Aunque se lo hayas preguntado a avesudra, te doy mi opinión. Para usar OpenGL, te aconsejo que uses GLFW. En mi experiencia, he encontrado más tutoriales sobre GLFW que sobre FreeGLUT. Por ejemplo, mi tutorial favorito de entre todos los que he encontrado es: http://learnopengl.com/. La información está muy clara y trata tanto los temas más sencillos como los más complejos con total soltura y bien explicado. Otros tutoriales son:
Yo no he encontrado ningún tutorial sobre OpenGL 3.3 en adelante en español. NO APRENDAS VERSIONES INFERIORES A ESTA. OpenGL sufrió un gran cambio a partir de la versión 3, donde se fueron descatalogando la mayoría de las funcionalidades, por lo que todo lo que aprendieses de las versiones anteriores a la 3, no te serviría de nada al pegar el salto.

Suscribo todo lo dicho, yo intenté empezar con el segundo que has comentado y la verdad que muy bien salvo que lo dejé por falta de tiempo.

En cuanto a GLFW , sencilla, API intuitiva y muy documentada.

Estoy totalmente de acuerdo contigo.

Un saludo.
#43
Las colas se suelen utilizar por ejemplo para programar un planificador de tareas de un sistema operativo. Para que el primer programa que entre a ejecutarse sea el ultimo que salga y tenga una respuesta coherente, luego hay modificaciones como las colas de prioridad, ya que si al sistema operativo se le cruza algo importante lo tiene que insertar en el lugar correcto para que se ejecute lo antes posible.

¿Has programado alguna vez en C++ o te lo han soltado así porque sí?

Manejo de memoria.
Punteros...

Solo tienes que ir creando nodos con el operador new e ir metiendo datos y enlazando los nodos unos con otros por lo menos para la de insertar.

¿No has visto nunca nada de Estructuras de Datos? Pilas, Listas, Listas doblemente enlazadas, Listas circulares...

Es que la idea de estas cosas es que intentes hacer algo aunque te falle, pero entiendo que si ves C++ por primera vez o incluso C te acojone bastante.

Un saludo.
#44
Hola RGT a ver, como ya habrás investigado una cola no es más que una estructura de datos de tipo FIFO, First in First Out. La aproximación que haces con la estructura nodo que has creado ahí es la ideal,
ahora bien ¿y cómo hago las funciones de insertar/sacar etc...?

Fíjate que en la cola lo que siempre tienes que saber es quién es el primero y quién es el último, ¿cómo haces eso? pues si quieres te creas otra estructura tal que así:

Código (cpp) [Seleccionar]
typedef struct _nodo {
  int dato;
  struct _nodo *siguiente;
} tipoNodo;

typedef struct _cola{
  tipoNodo *primero;
  tipoNodo *ultimo;
} tipoCola;


Para hacer la función de insertar lo que tienes que hacer es crearte un nuevo nodo que apunte al primero de la cola, pero ahora el primero de la cola pasa a ser el último que has creado. Digamos que tienes que hacer:

Crea Nodo
Campo siguiente del nodo creado apunta a cola->primero
Primero ahora apunta al nodo que acabamos de crear


Tienes que tener cuidado porque el primer nodo que crees es el primero y el último y además el siguiente es NULL ya que no hay más nodos.

La función de sacar te la dejo a tí.

Lo demás ahora mismo no tengo tiempo para darte una explicación detallada pero,en las colas con prioridad cada nodo lleva asociada una prioridad y entonces tienes dos maneras de implementarlas:


  • Con una lista ordenada, esto tiene el problema de que para sacar el elemento de máxima prioridad tendras un coste de O(1), sin embargo si lo que quieres es insertarlo, como la lista está ordenada vas a tener un coste de O(n) en el peor de los casos.
  • Con una lista desordenada pasa al contrario para insertar tendrías un coste de O(1) ya que insertas al principio sin preocuparte por el orden, pero para sacar el máximo vas a tener que buscarlo con un coste de O(n).

Creo que esto contesta a la tercera pregunta, ya que vas a tener que decidir entre los dos y el enunciado problema es claro en esto.

En cuanto a la implementación te recomiendo que uses las clases de C++ (si te dejan) y si te dejan también podrías usar las plantillas.

Un saludo.
#45
No me gusta la independencia, no me gusta Artur Más, además NO HAY UNA MAYORÍA SOCIAL que permita la independencia, porque el 50% no es mayoría social.

Ahora bien olvidando el caso concreto, creo que si el 80% o por ahí de una sociedad quiere independizarse y se llegan a acuerdos para que lo haga ¿quién soy yo para juzgarles? Esto es muy sencillo es como si mi vecina del 3º se quiere tirar de la azotea y la comunidad de vecinos dice que ni mijita que le quedan 20 años de comunidad.

Saludos.
#46
Programación C/C++ / Re: Hola, una ayudita please
11 Noviembre 2015, 19:25 PM
Cita de: jgarridc en 11 Noviembre 2015, 19:22 PM
Joer, muchísimas gracias Avesudra me estaba volviendo loco, estoy aprendiendo a programar en C y estoy muy verde, pues eso, mil gracias por tu tiempo y un saludo.

De nada, aquí estamos para eso, ¡mucho ánimo!

PD: Una sugerencia, aunque sé que en algunas Universidades enseñan a trabajar con conio, system("pause") y fflush(stdin) y tendrás que utilizarlo casi por obligación te recomiendo que te pases por aquí:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Un saludo.
#47
Programación C/C++ / Re: Hola, una ayudita please
11 Noviembre 2015, 19:18 PM
Hola, el código no te funciona porque tienes puesto en el scanf :

Código (cpp) [Seleccionar]
scanf("%d ", &num);

En lugar de:

Código (cpp) [Seleccionar]
scanf("%d", &num);

El comportamiento de scanf no está definido en ese formato, solo elimina los espacios antes del especificador de formato. Aquí tienes más información:

http://www.cplusplus.com/reference/cstdio/scanf/

El problema es que scanf lee todo lo que has puesto por consola y además lo que queda en el buffer, si tú le añades un espacio es como si estuviese esperando un carácter más, por eso no funciona. Date cuenta de que si pones cualquier numero y luego cualquier otro, el programa funciona, pero de forma incorrecta.

Un saludo.
#48
Pues a mi el mismo código en GCC me da lo que debe salir 1ms
#49
Programación C/C++ / Re: hola
11 Noviembre 2015, 00:06 AM
Seguramente será que no estás enlazando la biblioteca glut correctamente o directamente no la estás enlazando. En el IDE DevCpp no sé como se añade la opción para añadir los parámetros de compilación o las bibliotecas.
De todas maneras tanto en Linux como en Windows, si vas a la carpeta donde tienes el código y haces:

gcc main.c -lglut -o main

Luego solo sería ejecutar el main. Lo importante es el -lglut, si consigues ponerlo en el DevCpp ( y tienes biblioteca instalada) te enlazará el codigo bien.

Un saludo.
#50
Java / Re: Errores con simulador de banco en Java
9 Noviembre 2015, 00:48 AM
Sabiendo en que índice de la cuenta bancaria es x debería corresponder al índice del monto, digamos que el indice 1 del monto coincide con la cuenta 345, pero esto no es muy eficiente, Lo más lógico sería crearte otra clase que fuese CuentaBancaria, y que albergase atributos como el número de cuenta, los titulares, el monto que hay en la cuenta, y métodos para manejar dichos atributos. Y luego de eso en el main utiizarías un array de objetos del tipo CuentaBancaria.

Un saludo y sobre todo un consejo, cuanto más te comas el coco(aquí en españa es pensar mucho las cosas) más aprenderás.