Es la primera vez que ingreso a este foro con el proposito de ayudarnos mutuamente. aquí subo el código que actualmente tengo, me marca errores sólo en el MAIN a partir de la linea 45 (while(1)), espero me puedan apoyar, subo tmbn los archivos de cabecera. el .h y el .cpp
MAIN CPP.
# include <cstdio>
# include "queue.h"
# include <cstdlib>
# include <ctype.h>
# include <iostream>
# include <ctime>
using namespace std;
int main() {
queue alta;
queue media;
queue baja;
char nivel;
int solicitud;
int opcion;
srand (time(NULL));
generar (alta);
generar (media);
generar (baja);
while (1){
system ("cls");
printf("1.Solicitar servicio\n2.Recepcion de servicio\n3.Mostrar solicitudes\n4.Salir\n\nElija una opción : ");
scanf ("%i", opcion);
switch (opcion){
case 1:
do{
printf ("Nivel de prioridad del servicio : ");
scanf ("%c", nivel);
nivel = toupper(nivel);
}
while
(nivel != 'A' && nivel ! = 'M' && nivel != 'B');
solicitud = srand (time(NULL)) % 1000 + 1;
if (nivel == 'A')
ingresar (alta,solicitud,nivel);
else if (nivel == 'M')
ingresar (media, solicitud, nivel);
else
ingresar (baja,solicitud,nivel);
break;
case 2:
if (!vacia(alta))
printf("\nSolicitud ", dequeue(alta));
printf(":A listo\n");
else if (!vacia(media))
printf ("\nSolicitud ", dequeue(media));
printf(":M listo\n");
else if (!vacia(baja))
printf("\nSolicitud ", dequeue(baja));
printf(":B listo\n");
else
printf("No hay solicitud en espera");
break;
case 3 :
printf("\n Solicitudes de alta prioridad \n");
imprimir(alta);
printf("\n Solicitudes de media prioridad \n");
imprimir(media);
printf("\n Solicitudes de baja prioridad \n");
imprimir(baja);
break;
case 4:
destruir(alta);
destruir(media);
destruir(baja);
return 0;
break;
default :
printf("\Escriba una opcion valida\n");
}
system ("pause");
}
return 0;
queue.h
# ifndef _queue_hedear_
# define _queue_header_
typedef struct snode {
int data;
snode *next;
char nivel;
} node;
typedef struct {
node *enter;
node *exit;
int capacity;
int size;
} queue;
void generar(queue&);
void destruir(queue&);
int capacidad(queue&);
int tamanno(queue&);
void inicializar(queue&);
bool vacia(queue&);
bool llena(queue&);
bool enqueue(queue&, int,char); //ingresar
int dequeue(queue&); //extraer
int front(queue&); //top
void imprimir(queue&);
void limpiar (queue&);
# endif // _queue_header_
queue .cpp
#include "queue.h"
# include <cstdio>
void generar(queue &q, int n) {
q.exit = NULL;
q.enter = NULL;
q.capacity = n;
q.size = 0;
}
void destruir(queue &q) {
limpiar (q);
q.exit = NULL;
q.enter = NULL;
q.capacity = 0;
q.size = 0;
}
int capacidad(queue &q) { return q.capacity; }
int tamanno(queue &q) { return q.size; }
void inicializar(queue &q) {
limpiar (q);
q.enter = NULL;
q.exit = NULL;
q.size = 0;
}
bool vacia(queue &q) { return q.enter == NULL; }
bool llena(queue &q) { return q.capacity == q.size; }
bool enqueue(queue &q, int dato, char nivel) { //ingresar
node *aux = new node;
aux -> data = dato;
aux -> nivel = nivel;
aux -> next = NULL;
if (vacia(q)) {
q.enter = aux;
q.exit = aux;
} else {
q.exit -> next = aux;
q.exit = aux;
}
q.size++;
printf ("\n");
imprimir(q);
return true;
}
int dequeue(queue &q) {
if (!vacia(q)) {
int datoborrado;
node *aux = q.enter;
q.enter = q.enter -> next;
datoborrado = aux -> data;
delete aux;
q.size--;
return datoborrado;
}
return 0;
}
void generar (queue&q){
q.enter = NULL;
q.exit = NULL;
}
void imprimir(queue &q) {
node *aux = q.enter;
while (aux){
printf (" : ",aux ->data);
printf ("\n", aux ->nivel);
aux = aux -> next;
}
printf ("\n\n");
}
void limpiar (queue&q){
node *aux = q.enter;
while (aux){
q.enter = q.enter -> next;
delete aux;
aux = q.enter;
}
}
MAIN CPP.
# include <cstdio>
# include "queue.h"
# include <cstdlib>
# include <ctype.h>
# include <iostream>
# include <ctime>
using namespace std;
int main() {
queue alta;
queue media;
queue baja;
char nivel;
int solicitud;
int opcion;
srand (time(NULL));
generar (alta);
generar (media);
generar (baja);
while (1){
system ("cls");
printf("1.Solicitar servicio\n2.Recepcion de servicio\n3.Mostrar solicitudes\n4.Salir\n\nElija una opción : ");
scanf ("%i", opcion);
switch (opcion){
case 1:
do{
printf ("Nivel de prioridad del servicio : ");
scanf ("%c", nivel);
nivel = toupper(nivel);
}
while
(nivel != 'A' && nivel ! = 'M' && nivel != 'B');
solicitud = srand (time(NULL)) % 1000 + 1;
if (nivel == 'A')
ingresar (alta,solicitud,nivel);
else if (nivel == 'M')
ingresar (media, solicitud, nivel);
else
ingresar (baja,solicitud,nivel);
break;
case 2:
if (!vacia(alta))
printf("\nSolicitud ", dequeue(alta));
printf(":A listo\n");
else if (!vacia(media))
printf ("\nSolicitud ", dequeue(media));
printf(":M listo\n");
else if (!vacia(baja))
printf("\nSolicitud ", dequeue(baja));
printf(":B listo\n");
else
printf("No hay solicitud en espera");
break;
case 3 :
printf("\n Solicitudes de alta prioridad \n");
imprimir(alta);
printf("\n Solicitudes de media prioridad \n");
imprimir(media);
printf("\n Solicitudes de baja prioridad \n");
imprimir(baja);
break;
case 4:
destruir(alta);
destruir(media);
destruir(baja);
return 0;
break;
default :
printf("\Escriba una opcion valida\n");
}
system ("pause");
}
return 0;
queue.h
# ifndef _queue_hedear_
# define _queue_header_
typedef struct snode {
int data;
snode *next;
char nivel;
} node;
typedef struct {
node *enter;
node *exit;
int capacity;
int size;
} queue;
void generar(queue&);
void destruir(queue&);
int capacidad(queue&);
int tamanno(queue&);
void inicializar(queue&);
bool vacia(queue&);
bool llena(queue&);
bool enqueue(queue&, int,char); //ingresar
int dequeue(queue&); //extraer
int front(queue&); //top
void imprimir(queue&);
void limpiar (queue&);
# endif // _queue_header_
queue .cpp
#include "queue.h"
# include <cstdio>
void generar(queue &q, int n) {
q.exit = NULL;
q.enter = NULL;
q.capacity = n;
q.size = 0;
}
void destruir(queue &q) {
limpiar (q);
q.exit = NULL;
q.enter = NULL;
q.capacity = 0;
q.size = 0;
}
int capacidad(queue &q) { return q.capacity; }
int tamanno(queue &q) { return q.size; }
void inicializar(queue &q) {
limpiar (q);
q.enter = NULL;
q.exit = NULL;
q.size = 0;
}
bool vacia(queue &q) { return q.enter == NULL; }
bool llena(queue &q) { return q.capacity == q.size; }
bool enqueue(queue &q, int dato, char nivel) { //ingresar
node *aux = new node;
aux -> data = dato;
aux -> nivel = nivel;
aux -> next = NULL;
if (vacia(q)) {
q.enter = aux;
q.exit = aux;
} else {
q.exit -> next = aux;
q.exit = aux;
}
q.size++;
printf ("\n");
imprimir(q);
return true;
}
int dequeue(queue &q) {
if (!vacia(q)) {
int datoborrado;
node *aux = q.enter;
q.enter = q.enter -> next;
datoborrado = aux -> data;
delete aux;
q.size--;
return datoborrado;
}
return 0;
}
void generar (queue&q){
q.enter = NULL;
q.exit = NULL;
}
void imprimir(queue &q) {
node *aux = q.enter;
while (aux){
printf (" : ",aux ->data);
printf ("\n", aux ->nivel);
aux = aux -> next;
}
printf ("\n\n");
}
void limpiar (queue&q){
node *aux = q.enter;
while (aux){
q.enter = q.enter -> next;
delete aux;
aux = q.enter;
}
}