Ayuda con colas en C++

Iniciado por edgar_areyes, 28 Noviembre 2010, 05:42 AM

0 Miembros y 1 Visitante están viendo este tema.

edgar_areyes

Hola tengo un pequeño problema con este codigo de colas en C++, las funciones que me fallan son frente(el elemento de la cola que esta al frente) y atras(el elemento que esta al final de la cola)

Utilizo Turbo C++


#include <stdio.h>
#include <conio.h>

const int N=2;

struct cola {
char datos[N];
int frente,atras;
};


//Funciones//

int cola_vacia(struct cola c);
int cola_llena(struct cola c);
void inicializacion(struct  cola &c);
void encolar(char x, struct cola &c);
char desencolar(struct cola &c);
int espacios_vacios(struct cola &c );
int espacios_llenos(struct cola c);
char  atras(struct cola c);
char frente(struct cola &c);
void menu(void);


void menu(void){


int op,pocicion;
char d,s,x,v,b;
cola c;

inicializacion(c);

do{

clrscr();

gotoxy(5,0);printf("BIENVENIDO AL MENU PRINCIPAL\n\n");
gotoxy(5,3);printf("1).- Encolar");
gotoxy(5,5);printf("2).- Desencolar\n\n");
gotoxy(5,7);printf("3).- Atras\n\n");
gotoxy(5,9);printf("4).- Cola vacia\n\n");
gotoxy(5,11);printf("5).- Cola llena\n\n");
gotoxy(5,13);printf("6).- Inicializacion\n\n");
gotoxy(5,15);printf("7).- Espacios vacios\n\n");
gotoxy(5,17);printf("8).- Espacios ocupados\n\n");
gotoxy(5,19);printf("9).- Frente\n\n");
gotoxy(5,21);printf("10).- Salir\n\n");
gotoxy(5,23);printf("******DIGITE SU OPCION******: ");
fflush(stdin);
scanf("%d",&op);
switch(op)
  {
case 1:
clrscr();
gotoxy(20,2);
printf("**********Encolar**********\n\n");
if(cola_llena(c))
printf("Error... Sobreflujo...");
else {
printf("\nEscribe el dato a encolar: ");
fflush(stdin);
scanf("%c",&d);
encolar(d, c);
printf("El dato %c ha sido encolado...", d);
}
break;


case 2:
clrscr();
gotoxy(20,2);
printf("**********Desencolar**********\n\n");
if(cola_vacia(c))
printf(" \n Error bajoflujo...");
else
{
s = desencolar(c);
printf("\n\n El elemento que salio es [%c]",s);
}
break;

case 3:

clrscr();
gotoxy(20,2);
printf("**********Atras**********\n\n");
if(cola_vacia(c))
printf("\n Error bajoflujo...");
else
{
atras(c);
printf("Atras es %c y esta en la posicion [%d]");
}

break;

case 4:
int vac;
clrscr();
gotoxy(20,2);
printf("**********Modulo de cola vacia**********\n\n");
vac=cola_vacia(c);
if(vac==1)
printf("\n Bajoflujo....");
else
printf("\n La cola no esta vacia");


break;

case 5:
clrscr();
gotoxy(20,2);
printf("**********Modulo de cola llena**********\n\n");
if(cola_llena(c))
printf("\n\n... Sobreflujo...");
else
printf("\n\nLa cola no esta llena");

break;

case 6:
clrscr();
gotoxy(20,2);
printf("**********Modulo de inicializacion**********\n\n");
inicializacion(c);
//inicializacion(c);
printf("\nLa cola ha sido inicializada");
break;

case 7:
clrscr();
gotoxy(20,2);
printf("**********Espacios Vacios**********\n\n");
v=espacios_vacios( c );
printf ("Existen %d espacios vacios",v);
break;

case 8:
clrscr();
gotoxy(20,2);
printf("**********Espacios ocupados**********\n\n");
s=espacios_llenos( c );
printf ("Existen %d espacios ocupados",s);
break;

case 9:
clrscr();
gotoxy(20,2);
printf("**********Frente********** \n\n");
if(cola_vacia(c))
printf("\n Error bajoflujo...");
else{
b=frente(c);
printf("Frente es %c ",b);
}
break;

case 10:
clrscr();
gotoxy(30,12);
printf("Gracias");
break;

default:
printf("\nOpcion equivocada...");


}
getch();
  }while(op!=10);


return;
}


int cola_vacia(struct cola c)
{
if (c.atras==-1)
return 1;
else
return 0;
}




int cola_llena(struct cola c)
{

if(c.atras == N-1)
return 1;
else
return 0;
}




void inicializacion(struct  cola &c)  {

c.atras=-1;
return;
}





void encolar(char x, struct cola &c)   {
c.atras++;
c.datos[c.atras]=x;
return;
}




char desencolar(struct cola &c)  {
int i,z;
z=c.datos[0];
for(i=0;i<=c.atras;i++){
c.datos[i]=c.datos[i+1];
c.atras--;
return z; }
}


int espacios_vacios(struct cola &c )   {

return ((N-1)-c.atras);
}


int espacios_llenos(struct cola c){

return c.atras + 1;


}


char atras(struct cola c){
return (c.datos[c.atras]);
}

char frente(struct cola &c){
return c.datos[0];
}



#include <c:\TCWIN45\BIN\colas.h>


void main()
{
menu();
return;
}