Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 16, 2008, 04:21:40
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ayuda con clases POO.... Help Solo Expertos.. podran..XD 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Ayuda con clases POO.... Help Solo Expertos.. podran..XD  (Leído 432 veces)
J@Ker Lo10
Habitual
*****
Desconectado Desconectado

Mensajes: 200


'LA PRimeR @ VivE' J @Ker LOlo

???? ???? ????
Ver Perfil
« en: Noviembre 05, 2005, 03:46:19 »

Hola...
Mi problema es este..
Alguien me puede  decir que tiene mi codec...
No hace lo ke tiene ke hacer,,,,ya lo revise varias veces
y no encuentro mi error...

hai les dejo el codec...

#include<iostream.h>
void MsgErr(void);
struct Envio{
      char remite;
      char destino;
      int estado;//0=entregado a sede,1=recogido por camion, 2=recibido por sede
      };
class Enviar{//Clase padre para mensajeria de sobres y paquetes
      public:
       Envio *dato;
       };
/*CLASE SOBRE*/
class Sobre:public Enviar{
      public:
        Sobre(char rem,char des){dato->remite=rem;dato->destino=des;}
        Sobre(){dato->estado=-1;}
        Envio *VerDatos(){return dato;}
        int Estado(){return dato->estado;}
        void EntregarSede(){dato->estado=0;}
        void RecogidoCamion(){dato->estado=1;}
        void RecibidoSede(){dato->estado=2;}
      };
/*TERMINA LA CLASE SOBRE*/

/*CLASE PAQUETES*/
class Paquete:public Enviar{
      private: float peso;
      public:
        Paquete(char rem,char des,float kg){dato->remite=rem;dato->destino=des;peso=kg;}
        Paquete(){dato->estado=-1;}
        Envio *VerDatos(){return dato;}
        int Estado(){return dato->estado;}
        void EntregarSede(){dato->estado=0;}
        void RecogidoCamion(){dato->estado=1;}
        void RecibidoSede(){dato->estado=2;}
      };
/*TERMINA LA CLASE PAQUETES*/

/*CLASE PARA NODOS DE TIPO SOBRE*/
class NodoSobre{
      public:
        Sobre dato;
        NodoSobre *sig;
        };
/*TERMINA LA CLASE NODOS DE TIPO SOBRE*/

/*CLASE PARA NODOS DE TIPO PAQUETE*/
class NodoPaquete{
      public:
        Paquete dato;
        NodoPaquete *sig;
        };
/*TERMINA LA CLASE NODOS DE TIPO PAQUETE*/
struct DatosSede{
      char Nombre;
      char *ubicacion;};
/*CLASE SEDE*/
class Sede{
     private:
       DatosSede *dato;
       int enviosS;//Para ver el numero de sobres para enviar en cada Sede
       NodoSobre *punta,*cola;//Para la cola de sobres recibidos
       NodoSobre *primero,*ultimo;//Para la cola de sobres recibidos por camion
       NodoSobre *inicio,*final;//Para la cola de entregados a camion
       int enviosP;//Para ver el numero de paquetes para enviar en cada Sede
       NodoPaquete *pun,*col;//Para la cola de paquetes recibidos
       NodoPaquete *pri,*ult;//Para la cola de paquetes recibidos por camion
       NodoPaquete *ini,*fin;//Para la cola de entregados a camion
     public:
     Sede(char nom,char *ubi){dato->Nombre=nom;dato->ubicacion=ubi;}
     Sede(void)
     {enviosS=0;punta=NULL;cola=NULL;primero=NULL;ultimo=NULL;inicio=NULL;final=NULL;
      enviosP=0;pun=NULL;col=NULL;pri=NULL;ult=NULL;ini=NULL;fin=NULL;}
     ~Sede(void);
     DatosSede *VerDatos(){return dato;}
     int EnviosS(){return enviosS;}
     void RecibirSobre(Sobre &);//Agrega a cola de sobres  recibidos
     void RecibirSobreCamion(Sobre &);//Agrega a cola de sobres recibidos por camion
     Sobre EntregarSobreCamion();//Vacia cola de sobres recibidos y agrega a cola de sobres  entregados a camion
     int EnviosP(){return enviosP;}
     void RecibirPaquete(Paquete &);//Agrega a cola de paquetes recibidos
     void RecibirPaqueteCamion(Paquete &);//Agrega a cola de paquetes recibidos por camion
     Paquete EntregarPaqueteCamion();//Vacia cola paquetes recibidos y agrega a cola de paquetes entregados a camion
};
void Sede::~Sede(void)
{NodoSobre *temp;
while(punta!=NULL){
     temp=punta;
     punta=punta->sig;
     delete temp;}
while(primero!=NULL){
     temp=primero;
     primero=primero->sig;
     delete temp;}
while(inicio!=NULL){
     temp=inicio;
     inicio=inicio->sig;
     delete temp;}
NodoPaquete *temp1;
while(pun!=NULL){
     temp1=pun;
     pun=pun->sig;
     delete temp1;}
while(pri!=NULL){
     temp1=pri;
     pri=pri->sig;
     delete temp1;}
while(ini!=NULL){
     temp1=ini;
     ini=ini->sig;
     delete temp1;}
}
void Sede::RecibirSobre(Sobre &S)
    {
    NodoSobre *temp=new NodoSobre;
    if(!temp){MsgErr();}
    else{
    ++enviosS;
    S.EntregarSede();
    temp->dato=S;
    temp->sig=NULL;
    if(cola!=NULL){cola->sig=temp;}
    cola=temp;
    if(punta==NULL){punta=temp;}
   }
    }
void Sede::RecibirSobreCamion(Sobre &S)
    {
    NodoSobre *temp=new NodoSobre;
    if(!temp){MsgErr();}
    else{
    S.RecibidoSede();
    temp->dato=S;
    temp->sig=NULL;
    if(ultimo!=NULL){ultimo->sig=temp;}
    ultimo=temp;
    if(primero==NULL){primero=temp;}
   }
    }
Sobre Sede::EntregarSobreCamion()
{   Sobre Sob;//Variable para retorno
    if(punta!=NULL)
      {
      NodoSobre *temp=punta;
      cout<<"\nDe:"<<temp->dato.VerDatos()->remite;
      cout<<" Para:"<<temp->dato.VerDatos()->destino;
      //Agregamos a cola de sobres entregados a camion
   NodoSobre *temp1=new NodoSobre;
   if(!temp1){MsgErr();}
   else{
       temp->dato.RecogidoCamion();
       Sob=temp->dato;
       temp1->dato=temp->dato;
       temp1->sig=NULL;
       if(final!=NULL){final->sig=temp1;}
         final=temp1;
       if(inicio==NULL){inicio=temp1;}
       }
      punta=punta->sig;
      --enviosS;
      delete temp;
      }
    else{cout<<"\nNo hay sobres para enviar";}
    return Sob;
}
void Sede::RecibirPaquete(Paquete &P)
    {
    NodoPaquete *temp=new NodoPaquete;
    if(!temp){MsgErr();}
    else{
    ++enviosP;
    P.EntregarSede();
    temp->dato=P;
    temp->sig=NULL;
    if(col!=NULL){col->sig=temp;}
    col=temp;
    if(pun==NULL){pun=temp;}
   }
    }
void Sede::RecibirPaqueteCamion(Paquete &P)
    {
    NodoPaquete *temp=new NodoPaquete;
    if(!temp){MsgErr();}
    else{
    P.RecibidoSede();
    temp->dato=P;
    temp->sig=NULL;
    if(ult!=NULL){ult->sig=temp;}
    ult=temp;
    if(pri==NULL){pri=temp;}
   }
    }
Paquete Sede::EntregarPaqueteCamion()
{   Paquete Paq;//Variable para retorno
    if(pun!=NULL)
      {
      NodoPaquete *temp=pun;
      cout<<"\nDe:"<<temp->dato.VerDatos()->remite;
      cout<<" Para:"<<temp->dato.VerDatos()->destino;
      //Agregamos a cola de paquetes entregados a camion
   NodoPaquete *temp1=new NodoPaquete;
   if(!temp1){MsgErr();}
   else{
       temp->dato.RecogidoCamion();
       Paq=temp->dato;
       temp1->dato=temp->dato;
       temp1->sig=NULL;
       if(fin!=NULL){fin->sig=temp1;}
         fin=temp1;
       if(ini==NULL){ini=temp1;}
       }
      pun=pun->sig;
      --enviosP;
      delete temp;
      }
    else{cout<<"\nNo hay paquetes para enviar";}
    return Paq;
}
/*TERMINA LA CLASE SEDE*/
struct DatosCamion{
       int numero;
       char *marca,*color,*placas;};
/*CLASE CAMION*/
class Camion{
      private:
         DatosCamion *dato;
         NodoSobre *pila;//Para la pila de sobres en el camion
         NodoSobre *arriba;//Para la pila de sobres temporal a la hora de vaciar
         NodoPaquete *pil;//Para la pila de paquetes en el camion
         NodoPaquete *arr;//Para la pila de paquetes temporal a la hora de vaciar
         Sede Actual;//Para saber en que sede estamos
      public:
      Camion(int num,char *mar,char *col,char *pla)
       {dato->numero=num;dato->marca=mar;dato->color=col;dato->placas=pla;}
      Camion(void){pila=NULL;arriba=NULL;pil=NULL;arr=NULL;}
      ~Camion(void);
      void IrSede(Sede &SD){Actual=SD;};//Sirve para colocarnos en una Sede
      Sede SedeActual(){return Actual;}//Devolvemos la Sede actual
      void EntregarSobres();//Se busca sobres en la pila  para la sede actual y se le entregan
      void RecibirSobres();//Recibe sobres dependiendo de la Sede actual
      void EntregarPaquetes();//Se busca paquetes en la pila  para la sede actual y se le entregan
      void RecibirPaquetes();//Recibe paquetes dependiendo de la Sede actual
     };
void Camion::~Camion(void)
{NodoSobre *temp;
while(pila!=NULL){
     temp=pila;
     pila=pila->sig;
     delete temp;}
while(arriba!=NULL){
     temp=arriba;
     arriba=arriba->sig;
     delete temp;}
NodoPaquete *temp1;
while(pila!=NULL){
     temp1=pil;
     pil=pil->sig;
     delete temp1;}
while(arr!=NULL){
     temp1=arr;
     arr=arr->sig;
     delete temp1;}
}
void Camion::RecibirSobres()
{//Agregamos a la pila de sobres en el camion
  while(SedeActual().EnviosS()!=0)
       {
       NodoSobre *temp=new NodoSobre;
       if(!temp){MsgErr();}
       else{
      temp->dato=SedeActual().EntregarSobreCamion();
      temp->sig=pila;
      pila=temp;
      }
       }
}
void Camion::EntregarSobres()
{
 while(pila!=NULL)
      {
       NodoSobre *temp=pila;
       if(temp->dato.VerDatos()->destino==SedeActual().VerDatos()->Nombre)
    {
    cout<<"\nEste sobre es para ti..";
    SedeActual().RecibirSobreCamion(temp->dato);
    }
       else{//Se Agrega en una pila temporal los sobres que no son para esta Sede
       NodoSobre *temp1=new NodoSobre;
       if(!temp1){MsgErr();}
       else{
       temp1->dato=temp->dato;
       temp1->sig=arriba;
       arriba=temp1;
      }
      }
      cout<<"\nDe:"<<temp->dato.VerDatos()->remite;
      cout<<" Para:"<<temp->dato.VerDatos()->destino;
      delete temp;
      pila=pila->sig;
   }
//Despues se regresan los sobres a la pila original y se vacia la pila temporal
NodoSobre *temp1,*temp;
while(arriba!=NULL)
     {
     temp1=arriba;
     temp=new NodoSobre;
     if(!temp){MsgErr();}
     else{//Se agrega a la pila de sobres original
     temp->dato=arriba->dato;
     temp->sig=pila;
     pila=temp;
     }
      arriba=arriba->sig;
      delete temp1;
     }
}
void Camion::RecibirPaquetes()
{//Agregamos a la pila de paquetes en el camion
  while(SedeActual().EnviosP()!=0)
       {
       NodoPaquete *temp=new NodoPaquete;
       if(!temp){MsgErr();}
       else{
      temp->dato=SedeActual().EntregarPaqueteCamion();
      temp->sig=pil;
      pil=temp;
      }
       }
}
void Camion::EntregarPaquetes()
{
 while(pil!=NULL)
      {
       NodoPaquete *temp=pil;
       if(temp->dato.VerDatos()->destino==SedeActual().VerDatos()->Nombre)
    {
    cout<<"\nEste sobre es para ti..";
    SedeActual().RecibirPaqueteCamion(temp->dato);
    }
       else{//Se Agrega en una pila temporal los paquetes que no son para esta Sede
       NodoPaquete *temp1=new NodoPaquete;
       if(!temp1){MsgErr();}
       else{
       temp1->dato=temp->dato;
       temp1->sig=arr;
       arr=temp1;
      }
      }
      cout<<"\nDe:"<<temp->dato.VerDatos()->remite;
      cout<<" Para:"<<temp->dato.VerDatos()->destino;
      delete temp;
      pil=pil->sig;
   }
//Despues se regresan los paquetes a la pila original y se vacia la pila temporal
NodoPaquete *temp1,*temp;
while(arriba!=NULL)
     {
     temp1=arr;
     temp=new NodoPaquete;
     if(!temp){MsgErr();}
     else{//Se agrega a la pila de paquetes original
     temp->dato=arr->dato;
     temp->sig=pil;
     pil=temp;
     }
      arr=arr->sig;
      delete temp1;
     }
}
/*TERMINA LA CLASE CAMION*/

int main()
{
Sobre S1('A','B'),S2('B','C'),S3('C','A'),S4('A','C');//Crean los sobres
Paquete P1('A','B',18.02),P2('B','C',30.5),P3('C','A',50.Cool,P4('A','C',40.5);//Crean lo paquetes
Sede Sede1('A',"Pueblo nuevo"),Sede2('B',"San Jacinto"),Sede3('C',"Centro");//Crean las sedes
/*Se entregan los sobres a las sedes*/
Sede1.RecibirSobre(S1);
Sede1.RecibirSobre(S4);
Sede1.RecibirPaquete(P1);
Sede1.RecibirPaquete(P4);
Sede2.RecibirSobre(S2);
Sede2.RecibirPaquete(P2);
Sede3.RecibirSobre(S3);
Sede3.RecibirPaquete(P3);
Camion C1(1,"Ford","Negro","THJ523");//Se crea el camion
C1.IrSede(Sede1);//Dirijimos camion a sede1
C1.RecibirSobres();
C1.RecibirPaquetes();
C1.EntregarSobres();
C1.EntregarPaquetes();

C1.IrSede(Sede2);//Dirijimos camion a sede2
C1.RecibirSobres();
C1.RecibirPaquetes();
C1.EntregarSobres();
C1.EntregarPaquetes();

C1.IrSede(Sede3);//Dirijimos camion a sede3
C1.RecibirSobres();
C1.RecibirPaquetes();
C1.EntregarSobres();
C1.EntregarPaquetes();
return(0);
}
void MsgErr(void)
{cout<<"\nError:Memoria insuficiente...";}

En línea

El ConoCIMIenTo no lleGA poR si solo,
soLO kE el MEdio pARA oBteNERlo es ..........
codelogman
Visitante
« Respuesta #1 en: Noviembre 05, 2005, 04:04:07 »

te contsto con la misma descortsia con que le contestaste a zic (que falta de respeto)


QUIERES QUE TE HAGA LA TAREA?
En línea
J@Ker Lo10
Habitual
*****
Desconectado Desconectado

Mensajes: 200


'LA PRimeR @ VivE' J @Ker LOlo

???? ???? ????
Ver Perfil
« Respuesta #2 en: Noviembre 05, 2005, 05:17:06 »

En línea

El ConoCIMIenTo no lleGA poR si solo,
soLO kE el MEdio pARA oBteNERlo es ..........
codelogman
Visitante
« Respuesta #3 en: Noviembre 05, 2005, 06:09:16 »

por nada
En línea
J@Ker Lo10
Habitual
*****
Desconectado Desconectado

Mensajes: 200


'LA PRimeR @ VivE' J @Ker LOlo

???? ???? ????
Ver Perfil
« Respuesta #4 en: Noviembre 06, 2005, 08:45:35 »

Hola!

Alguien puede ayudarme....
Explico el problema...

MENSAJERIA Y PAQUETERIA
Tenemos un clase abstracta llamada Envio
Una clase Sobres derivada de la clase Envio
Una clase Paquetes derivada de la clase envio

*Tambien contamos con una clase NodoSobre y una clase NodoPaquete,que nos sirven para crear pilas y colas...

Contamos con una clase Sede
En esa clase debemos tener 3 colas para sobres y 3 colas para paquetes..
Una cola para recibir sobres
Otra cola para guardar los sobres que ya enviamos
Otra cola para guardar los paquetes que nos envian
(y los mismo con paquetes)

Tambien contamos con una clase Camion
el camion  tiene una pila para sobres,una pila temporal para sobres y una pila para paquetes y una pila temporal para paquetes..
Lo que se hace en el camion es:
Colocarnos en una Sede
Recojer los Sobres y Paquetes que la Sede tiene en la cola de sobres recibidos
Entregar los sosbres y paquetes que  tenemos en las pilas..
Eperacion se hace haciendo un pop() en la pila comparando el destino con el nombre de la sede actual
Si son iguales entonces entregamos el sobre
si no lo son entonces agregamos a la pila temporal
y de nuevo vaciamos la pila temporal  y agregamos sus elementos en la pila original....

Pues ese es el problema....

Mi error no es de sintaxix... Tengo 0 errores..
Tampoco es de logica ya lo revise bien....
Bueno si alguien me puede ayudar, claro a ecepcion de CODELOGMAN....

Porfa echenle un vistaso...cualkier sugerencia sera bien revisada....
En línea

El ConoCIMIenTo no lleGA poR si solo,
soLO kE el MEdio pARA oBteNERlo es ..........
x_kira_x
Visitante
« Respuesta #5 en: Noviembre 06, 2005, 10:42:49 »

Que queires que te diga...mi compilador me da 15 errores y 1 warning...

Saludos; Kira
En línea
J@Ker Lo10
Habitual
*****
Desconectado Desconectado

Mensajes: 200


'LA PRimeR @ VivE' J @Ker LOlo

???? ???? ????
Ver Perfil
« Respuesta #6 en: Noviembre 06, 2005, 05:30:52 »

Ho diablos..
Entonce le are caso a Dark..
Cambiare de compilador.



ok Salud2
En línea

El ConoCIMIenTo no lleGA poR si solo,
soLO kE el MEdio pARA oBteNERlo es ..........
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ayuda con clases POO.... Help Solo Expertos.. podran..XD « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC