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

#31
Es que ese uso que haces del template es muy extraño. Yo nunca lo había visto, de hecho no sabía ni que funcionase.
Como yo aprendí, y creo que es lo correcto, es que en el template simplemente le indiques el tipo de datos, luego las dimensiones de la matriz es cosa del constructor que tendrás que programar.

El error, creo, que es porque al hacer eso de las dimensiones en el template, te los detecta como datos de tipos distintos. Pero ya te digo, comento lo que imagino porque no sabia que se pudieran declarar templates así.

Puedes probar algo así

Código (cpp) [Seleccionar]

template <class T>
class matriz{
matriz ()
matriz(int filas, int columnas){
/* aquí haces tus cosas según como quieras implementarlo*/
};
#32
Un break; dentro del if, saldría del 'while'. No tendría sentido que saliera del 'if' en realidad xD.

Pero si, queda más bonito poner la condición en el while, la verdad, y lo hace más legible.
#33
Claro, pero no es necesario crear una clase "Grafo" ni mucho menos. El algoritmo se representa mediante un grafo matemáticamente, pero a la hora de implementarlo, y más sabiendo que el tamaño es constante, una matriz es lo mejor.
#34
Pues no es dificil, sabiendo que son 45 nodos, puedes hacer una matriz de 45x45 que indique la distancia de un nodo a otro, con eso ya lo tienes todo hecho, reordenas el vector según el algoritmo, y lo vas realizando.
#35
Y para que quieres usar un grafo para eso?
Son ganas de complicarte la vida, cuando lo más simple es usar vectores y se soluciona tu problema.
#36
srand(unsigned int) pone la semilla a la que se inicializa el algoritmo generados de números pseudo-aleatorios.

Luego poniendo en google la otra función DWORD WINAPI GetTickCount(void);

Return Value

The return value is the number of milliseconds that have elapsed since the system was started.

Pues eso, te devuelve el numero de milisegundos que pasaron desde que se encendio el ordenador.

En resumen, srand(GetTickCount()) sirve para poner un número más o menos aleatorio para el comienzo de generación de números aleatorios de la función rand().

#37
Programación C/C++ / Re: Pila en C++
25 Mayo 2011, 20:24 PM
No sé exactamente que problemas tienes, pero mirándolo así por encima te puedo decir alguna cosa a corregir.

Código (cpp) [Seleccionar]

void Pila::EmptyStack() //Verifica si la pila esta vacia,
{ //viendo si el tope esta en -1
top = -1;
}


Esto no hace lo que dice el comentario, lo que hace esta función es limpiar la pila.
Para hacer lo que dice el comentario deberías retornar un booleano y comprobar si el tope es igual a -1

Código (cpp) [Seleccionar]

int Pila::Pop() //Esta funcion extrae los elementos de la pila
{
int Aux; //Se crea una variable auxiliar o temporal para poder guardar
if(top == -1) //dentro de la variable Aux el ultimo elemento en entrar
{
cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl;
}
else
{
Aux = A[top]; //Aqui se guarda el elemento del tope osea el ultimo elemento en entrar
top--; //se decrementa el tope y apunta al siguiente elemento y asi sucecivamente hasta que quede en -1
}
return Aux; //se retorna el ultimo elemento del arreglo A[] almacenado en la variable Aux
}



Ten cuidado aquí. En el caso de que la pila esté vacía, estás retornando una variable sin ningún valor de inicialización, así que no puedes saber lo que estas devolviendo. El return debería ir dentro del else.

Además, en cuestión a todos estos mensajes. En el caso de que se esté intentando extraer un elemento de una pila vacía, o no se puede introducir un elemento porque la pila está llena, deberías envíar un error con un aserto o con  un throw y parar la ejecución del programa. Un simple mensaje por pantalla no estaría bien.

Supongo que los nombres de las funciones te los mandarían poner en clase así, pero lo normal es que la función Pop() haga lo que hace tu función ClearStack(),y haya una  función Top() que haga lo que hace tu función Pop().

Si veo algo más ya vuelvo a postear.
#38
Programación C/C++ / Re: const_cast
18 Mayo 2011, 14:44 PM
Si no te entiendo mal, deberías llamar a introduce resultados así.


p2->Introduce_resultados (gran_premio,puesto);
//o bien
*(p2).Introduce_resultados(gran_premio,puesto);

#39
Tienes que hacerlo como dice El_Java...

Otra cosa sería devolver una estructura con 2 posiciones, donde en una se guarde el int y en otra la estructura, pero eso me parece una chorrada y un lío.
#40
Pues lo único que puedes hacer es leer todo el buffer, por ejemplo haciendo esto.


while(getchar() != '\n');
setbuf(stdin, NULL);


Esto está sacado de este mismo foro.