mysterical error

Posted by Görkem Buzcu on Stack Overflow See other posts from Stack Overflow or by Görkem Buzcu
Published on 2012-12-15T23:00:47Z Indexed on 2012/12/15 23:03 UTC
Read the original article Hit count: 195

Filed under:

i get "customer_service_simulator.exe stopped" error, but i dont know why? this is my c programming project and i have limited time left before deadline. the code is:

#include <stdio.h>
#include <stdlib.h>
#include<time.h>

#define FALSE 0
#define TRUE 1

/*A Node declaration to store a value, pointer to the next node and a priority value*/
struct Node
{
    int priority; //arrival time
    int val; //type
    int wait_time;
    int departure_time;
    struct Node *next;
};

Queue Record that will store the following: size: total number of elements stored in the list front: it shows the front node of the queue (front of the queue) rear: it shows the rare node of the queue (rear of the queue) availability: availabity of the teller

struct QueueRecord
{
    struct Node *front;   
    struct Node *rear;    
    int size;          
    int availability;
};

typedef struct Node *niyazi;
typedef struct QueueRecord *Queue;

Queue CreateQueue(int);
void MakeEmptyQueue(Queue);
void enqueue(Queue, int, int);
int QueueSize(Queue);
int FrontOfQueue(Queue);
int RearOfQueue(Queue);
niyazi dequeue(Queue);
int IsFullQueue(Queue);
int IsEmptyQueue(Queue);
void DisplayQueue(Queue);
void sorteddequeue(Queue);
void sortedenqueue(Queue, int, int);
void tellerzfunctionz(Queue *, Queue, int, int);

int main()
{
    int system_clock=0;
    Queue waitqueue;
    int exit, val, priority, customers, tellers, avg_serv_time, sim_time,counter;
    char command;
    waitqueue = CreateQueue(0);    
    srand(time(NULL));
    fflush(stdin);
    printf("Enter number of customers, number of tellers, average service time, simulation time\n:");
    scanf("%d%c %d%c %d%c %d",&customers, &command,&tellers,&command,&avg_serv_time,&command,&sim_time);  
    fflush(stdin);
    Queue tellerarray[tellers];
    for(counter=0;counter<tellers;counter++){
                                             tellerarray[counter]=CreateQueue(0); //burada teller sayisi kadar queue yaratiyorum
                                             }
    for(counter=0;counter<customers;counter++){
                                               priority=1+(int)rand()%sim_time; //this will generate the arrival time
                                               sortedenqueue(waitqueue,1,priority); //here i put the customers in the waiting queue
                                               }

    tellerzfunctionz(tellerarray,waitqueue,tellers,customers);
    DisplayQueue(waitqueue);
    DisplayQueue(tellerarray[0]);
    DisplayQueue(tellerarray[1]);
//    waitqueue->


    printf("\n\n");              
    system("PAUSE");    
    return 0;
}

/*This function initialises the queue*/
Queue CreateQueue(int maxElements)
{
    Queue q;

    q = (struct QueueRecord *) malloc(sizeof(struct QueueRecord));      
    if (q == NULL)
        printf("Out of memory space\n");
    else
       MakeEmptyQueue(q);
    return q;
}

/*This function sets the queue size to 0, and creates a dummy element 
and sets the front and rear point to this dummy element*/
void MakeEmptyQueue(Queue q)
{
    q->size = 0;
    q->availability=0;
    q->front = (struct Node *) malloc(sizeof(struct Node));
    if (q->front == NULL)
           printf("Out of memory space\n");
    else{   
            q->front->next = NULL;
            q->rear = q->front;
    }
}

/*Shows if the queue is empty*/
int IsEmptyQueue(Queue q)
{
    return (q->size == 0);
}


/*Returns the queue size*/
int QueueSize(Queue q)
{
    return (q->size);
}

/*Shows the queue is full or not*/
int IsFullQueue(Queue q)
{
    return FALSE;
}

/*Returns the value stored in the front of the queue*/
int FrontOfQueue(Queue q)
{
    if (!IsEmptyQueue(q))
        return q->front->next->val;
    else    
    {
        printf("The queue is empty\n");
            return -1;
    }
}

/*Returns the value stored in the rear of the queue*/
int RearOfQueue(Queue q)
{
    if (!IsEmptyQueue(q))
        return q->rear->val;
     else   
     {
         printf("The queue is empty\n");
         return -1;
     }
}

/*Displays the content of the queue*/
void DisplayQueue(Queue q)
{
    struct Node *pos;

    pos=q->front->next;
    printf("Queue content:\n");

    printf("-->Priority   Value\n");
    while (pos != NULL)
    {
        printf("--> %d\t     %d\n", pos->priority, pos->val);
        pos = pos->next;
    }
}

void enqueue(Queue q, int element, int priority){
     if(IsFullQueue(q)){
                        printf("Error queue is full");
                        }
     else{
         q->rear->next=(struct Node *)malloc(sizeof(struct Node));
         q->rear=q->rear->next;
         q->rear->next=NULL;
         q->rear->val=element;
         q->rear->priority=priority;
         q->size++;
         }

}

void sortedenqueue(Queue q, int val, int priority)
{
     struct Node *insert,*temp;
     insert=(struct Node *)malloc(sizeof(struct Node));
     insert->val=val;
     insert->priority=priority;
     temp=q->front;
     if(q->size==0){
                   enqueue(q, val, priority);
                   }
     else{
          while(temp->next!=NULL && temp->next->priority<insert->priority){
                                                       temp=temp->next;
                                                       }
          //printf("%d",temp->priority);
          insert->next=temp->next;
          temp->next=insert;
          q->size++;
          if(insert->next==NULL){
                                q->rear=insert;
                                }
          }
}
niyazi dequeue(Queue q)
{
       niyazi del;
       niyazi deli;
       del=(niyazi)malloc(sizeof(struct Node));
       deli=(niyazi)malloc(sizeof(struct Node));
     if(IsEmptyQueue(q)){
                      printf("Queue is empty!");
                      return NULL;
                      }
     else
     {

         del=q->front->next;
         q->front->next=del->next;
         deli->val=del->val;
         deli->priority=del->priority;
         free(del);
         q->size--;
         return deli;
         }

}
void sorteddequeue(Queue q)
{
     struct Node *temp;
     struct Node *min;
     temp=q->front->next;
     min=q->front;
     int i;
     for(i=1;i<q->size;i++)
     {
                           if(temp->next->priority<min->next->priority)
                                                                       {
                                                                       min=temp;
                                                                       }
                           temp=temp->next;
     }
     temp=min->next;
     min->next=min->next->next;
     free(temp);
     if(min->next==NULL){
                         q->rear=min;
                         }
     q->size--;
}
void tellerzfunctionz(Queue *a, Queue b, int c, int d){
     int i;
     int value=0;
     int priority;
     niyazi temp;
     temp=(niyazi)malloc(sizeof(struct Node));
     if(c==1){
              for(i=0;i<d;i++){
                               temp=dequeue(b);
                               sortedenqueue((*(a)),temp->val,temp->priority);
                               }
              }
     else{
          for(i=0;i<d;i++){
                           while(b->front->next->val==1){
                                                         if((*(a+value))->availability==1){
                                                                                       temp=dequeue(b);
                                                                                       sortedenqueue((*(a+value)),temp->val,temp->priority);
                                                                                       (*(a+value))->rear->val=2;
                                                                                       }
                                                         else{
                                                              value++;
                                                              }
                                                         }
                           }
          }
}
//end of the program

© Stack Overflow or respective owner

Related posts about c