TAD Cola en Dev C++

Ver el tema anterior Ver el tema siguiente Ir abajo

TAD Cola en Dev C++

Mensaje por v1ct0r el Sáb Nov 08, 2008 3:43 pm

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
    {
             
    }

}

_____________________________________________________
avatar
v1ct0r
Iniciado

Masculino
Cantidad de envíos : 7
Edad : 29
Fecha de inscripción : 06/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por campe el Sáb Nov 08, 2008 4:22 pm

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??
avatar
campe
Aprendiz

Masculino
Cantidad de envíos : 42
Edad : 28
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por campe el Sáb Nov 08, 2008 4:24 pm

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.
avatar
campe
Aprendiz

Masculino
Cantidad de envíos : 42
Edad : 28
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por Amonshy el Sáb Nov 08, 2008 4:50 pm

Te edito el código para una mejor visualización.

Un saludo.
avatar
Amonshy
Maestro

Masculino
Cantidad de envíos : 260
Edad : 28
Localización : Córdoba
Empleo /Ocio : Estudiante
Fecha de inscripción : 09/10/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por v1ct0r el Dom Nov 09, 2008 2:32 am

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 Rolling Eyes .
avatar
v1ct0r
Iniciado

Masculino
Cantidad de envíos : 7
Edad : 29
Fecha de inscripción : 06/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por campe el Dom Nov 09, 2008 2:22 pm

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 Wink . 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.
avatar
campe
Aprendiz

Masculino
Cantidad de envíos : 42
Edad : 28
Localización : De 8 am a 8 pm en la uco
Fecha de inscripción : 03/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por v1ct0r el Dom Nov 09, 2008 8:52 pm

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
avatar
v1ct0r
Iniciado

Masculino
Cantidad de envíos : 7
Edad : 29
Fecha de inscripción : 06/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: TAD Cola en Dev C++

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.