Problema con implementacion Cola Dinamica
Publicado por Carlos (4 intervenciones) el 09/12/2006 19:37:54
Hola Estimados, les escribo porque debo presentar un trabajo en una semana (una simulacion del
funcionamiento de Internet), y estoy atasacado. Aca envio las tres clases involucradas en la
parte que no me funciona:
Un TERMINAL crea un MENSAJE nuevo, y ese mensaje debe ser puesto en la COLA de salida del TERMINAL.
Esta marcada la linea que me da error. El problema es que el Dev C no me muestra entero el
mensaje de error, y estoy totalmente desorientado cual puede ser el problema.
Uso Dev-C++ 4.9.8.0
Desde ya MUCHISIMAS GRACIAS, y espero me puedan enviar una luz al final del camino
Un abrazo
Carlos
// Clase : MENSAJE ----comienzo--------------------------
class Mensaje
{
protected:
short ROrigen;
short TOrigen;
int Tamanio;
int CantPaquetes;
int NumMensaje;
int NumPaquete;
short RDestino;
short TDestino;
public:
Mensaje();
Mensaje(short CodeR,short CodeT,int NumeroMensaje);
Mensaje(short CodeR,short CodeT,int NumeroMensaje,int CantidadPaq,int NumeroPaquete, short RDest, short TDest);
int getTamanio();
};
Mensaje::Mensaje()
{
};
Mensaje::Mensaje(short CodeR,short CodeT,int NumeroMensaje)
{
ROrigen=CodeR;
TOrigen=CodeT;
RDestino=rand()%CantRouters + 1;
TDestino=rand()%CantTerminales[CodeR] + 1;
Tamanio=rand()%1000 + 1;
};
Mensaje::Mensaje(short CodeR,short CodeT,int NumeroMensaje,int CantidadPaq,int NumeroPaq, short RDest, short TDest)
{
ROrigen=CodeR;
TOrigen=CodeT;
CantPaquetes= CantidadPaq;
NumPaquete=NumeroPaq;
RDestino=RDest;
TDestino=TDest;
};
int Mensaje::getTamanio()
{
return Tamanio;
};
// Clase : MENSAJE ----final-----------------------------
// Clase : COLA -------comienzo--------------------------
struct nodo {
Mensaje info;
struct nodo *sig;
};
typedef struct nodo *punteroaNodo;
punteroaNodo getNodo(void)
{
punteroaNodo p;
p=(punteroaNodo)malloc(sizeof(struct nodo));
return(p);
};
void liberarNodo(punteroaNodo p)
{
free(p);
}
class Cola
{
private:
punteroaNodo frente, fondo;
public:
Cola();
void poner(Mensaje dato);
Mensaje sacar();
int vacia();
};
Cola::Cola()
{
frente=NULL;
fondo=NULL;
};
void Cola::poner(Mensaje dato)
{
punteroaNodo p;
p=getNodo();
p->info=dato;
p->sig=NULL;
if(fondo==NULL)
frente=p;
else
(fondo)->sig=p;
fondo=p;
};
Mensaje Cola::sacar()
{
punteroaNodo p;
Mensaje dato;
p=frente;
dato=p->info;
frente=p->sig;
if (frente==NULL)
fondo=NULL;
liberarNodo(p);
return dato;
};
int Cola::vacia()
{
if(frente==NULL)
return 1;
else
return 0;
}
// Clase : COLA--------final-----------------------------
// Clase : TERMINAL -----comienzo----------------------------
class Terminal
{
private:
short int CodeRouter;
short int CodeTerm;
char nombreArch[100];
short ProxMensaje;
int NumMensaje;
Cola ColaLlegada();
Cola ColaSalida();
int NumerodeCiclo;
void grabar(char linea[100]);
public:
Terminal();
Terminal(string cadR,string cadT);
void Ciclo(int NumDeCiclo);
};
Terminal::Terminal()
{
};
Terminal::Terminal(string cadR,string cadT)
{
char cadena[100]="";
char ruta[100]="";
char caux1[3];
char caux2[3];
istringstream aux(cadR);
aux >> CodeRouter;
istringstream aux2(cadT);
aux2 >> CodeTerm;
itoa(CodeRouter,caux1,10);
itoa(CodeTerm,caux2,10);
strcat(ruta,"g:\\aed\\tf\\codigo\\Internet_23\\R");
strcat(ruta,caux1);
strcat(ruta,"_T");
strcat(ruta,caux2);
strcat(ruta,".txt");
strcpy(nombreArch,ruta);
ofstream fout(ruta);
fout << "Se crea el Terminal CODIGO: " << CodeRouter << "-" << CodeTerm << endl;
fout.close();
ProxMensaje=rand()%5 + 1;
NumMensaje=0;
};
void Terminal::grabar(char linea[100])
{
ofstream fout(linea);
fout << "Esto es una prueba de Terminal";
fout.close();
};
void Terminal::Ciclo(int NumDeCiclo)
{
NumerodeCiclo=NumDeCiclo;
if (ProxMensaje==NumDeCiclo)
{
NumMensaje=NumMensaje+1;
Mensaje Nuevo(CodeRouter,CodeTerm,NumMensaje);
ColaSalida.poner(Nuevo); // ESTA ES LA LINEA QUE ME DA ERROR !!
}; // if
}; // Terminal::Ciclo
// Clase : TERMINAL -----fin-----------------------------
funcionamiento de Internet), y estoy atasacado. Aca envio las tres clases involucradas en la
parte que no me funciona:
Un TERMINAL crea un MENSAJE nuevo, y ese mensaje debe ser puesto en la COLA de salida del TERMINAL.
Esta marcada la linea que me da error. El problema es que el Dev C no me muestra entero el
mensaje de error, y estoy totalmente desorientado cual puede ser el problema.
Uso Dev-C++ 4.9.8.0
Desde ya MUCHISIMAS GRACIAS, y espero me puedan enviar una luz al final del camino
Un abrazo
Carlos
// Clase : MENSAJE ----comienzo--------------------------
class Mensaje
{
protected:
short ROrigen;
short TOrigen;
int Tamanio;
int CantPaquetes;
int NumMensaje;
int NumPaquete;
short RDestino;
short TDestino;
public:
Mensaje();
Mensaje(short CodeR,short CodeT,int NumeroMensaje);
Mensaje(short CodeR,short CodeT,int NumeroMensaje,int CantidadPaq,int NumeroPaquete, short RDest, short TDest);
int getTamanio();
};
Mensaje::Mensaje()
{
};
Mensaje::Mensaje(short CodeR,short CodeT,int NumeroMensaje)
{
ROrigen=CodeR;
TOrigen=CodeT;
RDestino=rand()%CantRouters + 1;
TDestino=rand()%CantTerminales[CodeR] + 1;
Tamanio=rand()%1000 + 1;
};
Mensaje::Mensaje(short CodeR,short CodeT,int NumeroMensaje,int CantidadPaq,int NumeroPaq, short RDest, short TDest)
{
ROrigen=CodeR;
TOrigen=CodeT;
CantPaquetes= CantidadPaq;
NumPaquete=NumeroPaq;
RDestino=RDest;
TDestino=TDest;
};
int Mensaje::getTamanio()
{
return Tamanio;
};
// Clase : MENSAJE ----final-----------------------------
// Clase : COLA -------comienzo--------------------------
struct nodo {
Mensaje info;
struct nodo *sig;
};
typedef struct nodo *punteroaNodo;
punteroaNodo getNodo(void)
{
punteroaNodo p;
p=(punteroaNodo)malloc(sizeof(struct nodo));
return(p);
};
void liberarNodo(punteroaNodo p)
{
free(p);
}
class Cola
{
private:
punteroaNodo frente, fondo;
public:
Cola();
void poner(Mensaje dato);
Mensaje sacar();
int vacia();
};
Cola::Cola()
{
frente=NULL;
fondo=NULL;
};
void Cola::poner(Mensaje dato)
{
punteroaNodo p;
p=getNodo();
p->info=dato;
p->sig=NULL;
if(fondo==NULL)
frente=p;
else
(fondo)->sig=p;
fondo=p;
};
Mensaje Cola::sacar()
{
punteroaNodo p;
Mensaje dato;
p=frente;
dato=p->info;
frente=p->sig;
if (frente==NULL)
fondo=NULL;
liberarNodo(p);
return dato;
};
int Cola::vacia()
{
if(frente==NULL)
return 1;
else
return 0;
}
// Clase : COLA--------final-----------------------------
// Clase : TERMINAL -----comienzo----------------------------
class Terminal
{
private:
short int CodeRouter;
short int CodeTerm;
char nombreArch[100];
short ProxMensaje;
int NumMensaje;
Cola ColaLlegada();
Cola ColaSalida();
int NumerodeCiclo;
void grabar(char linea[100]);
public:
Terminal();
Terminal(string cadR,string cadT);
void Ciclo(int NumDeCiclo);
};
Terminal::Terminal()
{
};
Terminal::Terminal(string cadR,string cadT)
{
char cadena[100]="";
char ruta[100]="";
char caux1[3];
char caux2[3];
istringstream aux(cadR);
aux >> CodeRouter;
istringstream aux2(cadT);
aux2 >> CodeTerm;
itoa(CodeRouter,caux1,10);
itoa(CodeTerm,caux2,10);
strcat(ruta,"g:\\aed\\tf\\codigo\\Internet_23\\R");
strcat(ruta,caux1);
strcat(ruta,"_T");
strcat(ruta,caux2);
strcat(ruta,".txt");
strcpy(nombreArch,ruta);
ofstream fout(ruta);
fout << "Se crea el Terminal CODIGO: " << CodeRouter << "-" << CodeTerm << endl;
fout.close();
ProxMensaje=rand()%5 + 1;
NumMensaje=0;
};
void Terminal::grabar(char linea[100])
{
ofstream fout(linea);
fout << "Esto es una prueba de Terminal";
fout.close();
};
void Terminal::Ciclo(int NumDeCiclo)
{
NumerodeCiclo=NumDeCiclo;
if (ProxMensaje==NumDeCiclo)
{
NumMensaje=NumMensaje+1;
Mensaje Nuevo(CodeRouter,CodeTerm,NumMensaje);
ColaSalida.poner(Nuevo); // ESTA ES LA LINEA QUE ME DA ERROR !!
}; // if
}; // Terminal::Ciclo
// Clase : TERMINAL -----fin-----------------------------
Valora esta pregunta


0