Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - vegasound

#1
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;
   }
}










#2
Es correcto, en ningún momento escribí, "Hagan el código que solicito".

No veo razón por la que el post deba de ser banneado o borrado, Estoy pidiendo una mano, ayuda, de cualquier manera. saludos
#3
Alguien que me pueda echar una mano con un código de una Cola ya sea en c o c++.
Sí alguien quiere ayudarme le agradeceré infinitamente .

Crear cola:

La atención de servicios con tipos de prioridad
Asuma que existen tres tipos de prioridad: alta, media y baja. En un sistema de recepción de solicitudes, solo una soli- citud puede ser atendida a la vez. Una solicitud puede ser emitida con una prioridad alta, media o baja. El sistema de recepción:
1. 2. 3.
Solo atenderá servicios de prioridad alta, si estos existen en la lista de espera. Solo atenderá servicios de prioridad media, si no existen servicios de prioridad alta. Siempre atenderá servicios de prioridad baja, si no existen servicios de prioridad media o alta.
Este problema se puede modelar con la implementación de tres colas: una para las solicitudes de prioridad al- ta, otra para las solicitudes de prioridad media y otra más para las solicitudes de prioridad baja. Cuando una solicitud es generada, ocupará su lugar en la cola correspondiente. El sistema de recepción:
1.   Deberá intentar vaciar en primer lugar la cola de solicitudes de prioridad alta. 2.   Si la cola de solicitudes de prioridad alta se encuentra vacía, entonces intentará vaciar la cola de solicitudes de
prioridad media. 3.   Si las colas de solicitudes de prioridad alta y media se encuentran vacías entonces intentará vaciar la cola de
solicitudes de prioridad baja.
Implementación
Su aplicación deberá permitir al usuario ingresar una solicitud de servicio o una recepción.
   Una solicitud de servicio deberá consistir de un identificador de servicio (algún valor entero seleccionado arbi- trariamente) junto con un indicador de prioridad. Los indicadores de prioridad serán: A para alta, M para me- dia y B para baja. Por ejemplo, 3541:A denota al servicio 3541 de prioridad alta.
   Una recepción de servicio deberá atender la primera solicitud de la más alta prioridad que se haya emitido hasta el momento y que no haya sido atendida, según se explica en el planteamiento en el programa. Su apli- cación deberá informar cuál es el servicio que se atiende actualmente, mostrando en pantalla el identificador de servicio. En su caso, deberá informar si ningún servicio se encuentra en la lista de espera.




Ejemplo:

Suponga que ocurren la siguientes solicitudes en el orden que se presentan antes de antes de hacer alguna recepción de servicio:
1325:B
4800:M
732:B
8943:A
120:M
884:B

Si ninguna otra solicitud ocurre después, entonces su sistema deberá hacer la recepción de los servicios en el siguiente orden:
8943
4800
120
1325
732
884