TAD Cola en Dev C++
3 participantes
Página 1 de 1.
TAD Cola en Dev C++
Pues eso que no tengo ni jodienda idea de como montar el tipo cola en programacion con objetos de C++, aqui os mando el esqueleto, haber si arrojais algo de luz:
_____________________________________________________
- Código:
Cola.hpp_____________________________________________________
#ifndef __Cola__
#define __Cola__
class Cola
{
public:
// los elementos de la cola son de tipo entero
typedef int Item;
// constructor de la clase. Inicializa una cola y la deja sin elementos
Cola();
//destructor de la clase. Libera los recursos ocupados cuando acaba el ambito del objeto
~Cola();
// agrega el elemento x como ultimo elemento de la cola
void meter(Item x);
//devuelve el primer elemento de la cola. Si esta vacia, eleva la excepcion ColaVacia
Item frente() const;
//elimina el primer elemento de la cola
void sacar();
//devuelve verdadero si no hay elementos en la cola, falso en caso contrario
bool esVacia() const;
//excepciones que se elevan en caso de error
enum ErrorCola{ColaVacia};
private:
// tipos privados
struct Nodo
{
Item dato;
Nodo * siguiente;
};
//atributos
Nodo * ultimo;
};
#endif
_____________________________________________________
Cola.cpp______________________________________________
#include <iostream>
#include "Cola.hpp"
using namespace std;
namespace Cola
{
typedef int Item;
Cola c;
Cola::Cola()
// constructor de la clase. Inicializa una cola y la deja sin elementos
{
}
Cola::~Cola()
//destructor de la clase. Libera los recursos ocupados cuando acaba el ambito del objeto
{
}
Item Cola::frente() const
//devuelve el primer elemento de la cola. Si esta vacia, eleva la excepcion ColaVacia
{
}
void Cola::sacar()
//elimina el primer elemento de la cola
{
}
bool Cola::esVacia() const
//devuelve verdadero si no hay elementos en la cola, falso en caso contrario
{
}
}
_____________________________________________________
v1ct0r- Iniciado
-
Cantidad de envíos : 7
Edad : 35
Fecha de inscripción : 06/11/2008
Re: TAD Cola en Dev C++
A ver Victor, he estado mirando el código, una pregunta, cuando haces el cola.cpp en las funciones no has puesto nada, imagino que no lo has puesto para que no se haga el tema muy largo, pero puedes ponerlo? Y segundo, que fallo te da??
campe- Aprendiz
-
Cantidad de envíos : 42
Edad : 34
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008
Re: TAD Cola en Dev C++
Am una cosa más, funciona bien poniendo .hpp??? Siempre que he programado he puesto .h solamente aunque sea en c++, no creo que ese sea el fallo pero de todas maneras estás seguro de que eso está bien puesto?? Saludos.
campe- Aprendiz
-
Cantidad de envíos : 42
Edad : 34
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008
Re: TAD Cola en Dev C++
Te edito el código para una mejor visualización.
Un saludo.
Un saludo.
Amonshy- Maestro
-
Cantidad de envíos : 260
Edad : 34
Localización : Córdoba
Empleo /Ocio : Estudiante
Fecha de inscripción : 09/10/2008
Re: TAD Cola en Dev C++
Bueno primero gracias por responder man, no esperaba tanta rapidez, no os ofendais xD es finde y pensaba que muchos ni os pasariais por aqui. Tengo el examen este el martes y la profesora se ha lavado las manos al respecto, menos mal que me saque Laboratorio de Programacion el curso pasado porque sino tendria menos idea aun.
El caso es el siguiente, me piden que implemente una estructura de datos que simule el comportamiento de una cola. Esta estructura debe estar implementada como una lista enlazada circularmente de manera que declaramos una variable puntero que apunta al Ultimo nodo, (ultimo) he indirectamente (por medio de ultimo.siguiente) al primer nodo de la cola, es decir, la cabeza. Mi problema es que cuando declaro la funcion " void meter(Item x) " ocurre lo siguiente:
void Cola::meter(Item x)
{
Nodo * aux:
aux = new Nodo;
aux.dato = x;
aux.siguiente = ultimo.siguiente;
ultimo.siguiente = aux;
ultimo = aux;
}
Me suelta los errores siguientes:
In member function 'void Cola::meter(int)'
'dato' has not been declared
request for member of non-agreggate type before '=' token
'siguiente' has not been declared
request for member of non-aggregate type before ';' token
'siguiente' has not been declared
request for member of non-aggregate type before ';' token
[Build Error] [Cola.o] Error 1
A mi parecer, tiene toda la pinta de que el error que da es porque no accedo correctamente a la estructura del nodo al que apunta en cada momento "aux", o "ultimo". Entonces mi pregunta seria esa, como puedo acceder de una manera correcta a dichos campos?
Gracias de antemano.
PD: el fichero .hpp no da ningun error, o eso espero, porque lo creo con .hpp porque lo pone en la practica, como eso este mal, ya es para volverse loco, encima de que el guion es una autentica mierda xD .
El caso es el siguiente, me piden que implemente una estructura de datos que simule el comportamiento de una cola. Esta estructura debe estar implementada como una lista enlazada circularmente de manera que declaramos una variable puntero que apunta al Ultimo nodo, (ultimo) he indirectamente (por medio de ultimo.siguiente) al primer nodo de la cola, es decir, la cabeza. Mi problema es que cuando declaro la funcion " void meter(Item x) " ocurre lo siguiente:
void Cola::meter(Item x)
{
Nodo * aux:
aux = new Nodo;
aux.dato = x;
aux.siguiente = ultimo.siguiente;
ultimo.siguiente = aux;
ultimo = aux;
}
Me suelta los errores siguientes:
In member function 'void Cola::meter(int)'
'dato' has not been declared
request for member of non-agreggate type before '=' token
'siguiente' has not been declared
request for member of non-aggregate type before ';' token
'siguiente' has not been declared
request for member of non-aggregate type before ';' token
[Build Error] [Cola.o] Error 1
A mi parecer, tiene toda la pinta de que el error que da es porque no accedo correctamente a la estructura del nodo al que apunta en cada momento "aux", o "ultimo". Entonces mi pregunta seria esa, como puedo acceder de una manera correcta a dichos campos?
Gracias de antemano.
PD: el fichero .hpp no da ningun error, o eso espero, porque lo creo con .hpp porque lo pone en la practica, como eso este mal, ya es para volverse loco, encima de que el guion es una autentica mierda xD .
v1ct0r- Iniciado
-
Cantidad de envíos : 7
Edad : 35
Fecha de inscripción : 06/11/2008
Re: TAD Cola en Dev C++
Bueno Victor, primero de todo lo del .hpp lo pregunté porque era la primera vez que lo veía, así que ya se algo más XD. Ahora con respecto al error que te da, no estoy seguro, mañana como nos vemos todos en clase comentaré tu duda e intentaremos responderte para que hagas bien el examen . El fallo que te dá como tú bien dices esque no accede bien a la estructura aux, pienso que es por lo siguiente:
Cuando tienes una estructura tu accedes a sus campos con el operador ".". Como bien tu tienes puesto, pero si esa estructura la tienes como un puntero, en tu caso tu tienes *aux, para acceder a sus campos tienes que utilizar "->". Un ejemplo sería: aux->dato=x; Como te he dicho antes no estoy seguro, pero prúebalo, y sino mañana entre todos buscamos el error. Suerte y a estudiar mucho!!
Pd: cuando lo pruebes dime si te ha funcionado o no jeje.
Cuando tienes una estructura tu accedes a sus campos con el operador ".". Como bien tu tienes puesto, pero si esa estructura la tienes como un puntero, en tu caso tu tienes *aux, para acceder a sus campos tienes que utilizar "->". Un ejemplo sería: aux->dato=x; Como te he dicho antes no estoy seguro, pero prúebalo, y sino mañana entre todos buscamos el error. Suerte y a estudiar mucho!!
Pd: cuando lo pruebes dime si te ha funcionado o no jeje.
campe- Aprendiz
-
Cantidad de envíos : 42
Edad : 34
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008
Re: TAD Cola en Dev C++
Gracias man!!!! era una soberbia estupidez, mi problema era el -> xDDDDD vaya telita, que quebradero de cabeza, eso me pasa por no programar nada desde junio, se te olvidan gilipolleces como esa y el cin.get() dspues de leer un valor simple xDDD gracias man!
PD: Sacar un 9,9999999999999 en el examen a vuestra salud xDDD
PD: Sacar un 9,9999999999999 en el examen a vuestra salud xDDD
v1ct0r- Iniciado
-
Cantidad de envíos : 7
Edad : 35
Fecha de inscripción : 06/11/2008
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|