Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6643591
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T00:04:05+00:00 2026-05-26T00:04:05+00:00

I have been working on a simulation grocery store assignment and i believe its

  • 0

I have been working on a simulation grocery store assignment and i believe its relatively finished but i get a segmentation fault when i compile. If you could provide some direction or a solution I’d be most obliged.
Thanks,
Taylor

/*********************************************
PROGRAMMER: TAYLOR DOUTHITT
ASSIGNMENT: 5
FILE: Prog5.cc
DUE DATE: 10-5-11
USE: Contains methods defined in Prog5.h
*********************************************/

//#include "/home/onyuksel/courses/340/progs/11f/p5/prog5.h"
#include "prog5.h"


int main()
{
    //initialize arrival and departure time
    int custArrive, custLeave = 0;
    //set clock to zero
    int clock = 0;
    // set count to second customer
    int count = 2;
    // variables to track earliest next arrival and earlist next departure
    int earlyAr = 0;
    int earlyDept = 0;
    //variable to track next event
    int earlyEvent = earlyAr;

    //create list of customers
    list <cust> l;
    //create iterator for list
    list<cust>::iterator i;
    //create queue for checkout line
    queue <cust> q;
    //create stat object to store final statistics
    stat s;

    //create a customer object
    cust c1;
    //initilize with 1st cust data
    c1.atime = 0;
    c1.wtime = 0;
    c1.s_checkout = start_checkout(0);
    c1.id = 1;

    //add to list
    l.push_back(c1);

    //determine earliest next event
    custArrive = arr_time(clock);
    earlyEvent = custArrive;

    //update clock to time of next earliest event
    clock = custArrive;



    //Start of Simulation*********************

    // while simulation is still running
    while(clock < SIM_TIME)
    {
        // if customer is arriving
        if(clock == custArrive)
        {
            // create object for customer
            cust c;

            //fill data fields
            c.id = count;
            c.atime = custArrive;
            c.s_checkout = start_checkout( clock );
            c.wtime = 0;

            l.push_back( c ); // put into list 

            custArrive = arr_time( clock ); // calc next arrival

            i = min_element(l.begin(), l.end(), cmp); // find first to enter checkout 

            count++;  //increment customer id number

            //set earliest next arrival 
            earlyAr = custArrive;
        }

        // if customer has finished picking items
        else if(clock == i -> s_checkout)
        {
            //create object to move cust from list to queue
            cust temp;
            //copy values from list item to queue item
            temp.id = i -> id;
            temp.atime = i -> atime;
            temp.wtime = i -> wtime;
            temp.s_checkout = i -> s_checkout;

            //insert element into queue
            q.push(temp);
            //if queue is empty(this is the only element about to be in queue)
            if(q.size() == 1)
            {
                //set wait time to zero
                q.front().wtime = 0;
                //use dept_time to obtain departure time
                custLeave = dept_time(clock);
            }
            //set departure as next earliest departure
            earlyDept = custLeave;

        }

        // if customer departed
        else
        {
            //remove customer from queue
            cust c = q.front();
            q.pop();

            //use dept_time and update wtime of next cust in queue
            q.front().wtime = clock - q.front().s_checkout;

            clock += dept_time(clock);

            //update stat structure
            update_fin_stat( s, c, clock );
        }
        //determine next earliest event

        // if list isnt empty
        if(l.size() > 0)
        {
            i = min_element(l.begin(),l.end(), cmp); //find earliest checkout time
        }
        else
        {
            i -> s_checkout = (1000000); //set value to above sim-time
        }
        //if arrival is less than checkout time
        if(earlyAr < i -> s_checkout)
        {
            earlyEvent = earlyAr;  //earliest event is arrival
        }
     //else the checkout time is less than arrival
        else
        {
            earlyEvent = i -> s_checkout; //earliest event is checkout
        }
     //if list not empty and departure less than earliest event
        if (l.size() > 0 && earlyDept < earlyEvent)
        {
            earlyEvent = earlyDept; //earliest event is departure
        }

        // Set sim clock to next earliest event time
        clock = earlyEvent;
    }
    print_fin_stat(s);

    return 0;
}

// returns next arrival time
int arr_time (const int& clock)
{
    int temp = ( rand()% ( MAX_INT_ARR - MIN_INT_ARR + 1 ) + MIN_INT_ARR );
    temp += clock;
    return temp;
}

// returns next departure time
int dept_time (const int& clock)
{
    int temp = ( rand()% ( MAX_SERV - MIN_SERV + 1 ) + MIN_SERV );
    temp += clock;
    return temp;
}

// returns time to enter checkout line
int start_checkout (const int& clock)
{
    int temp = ( rand()% ( MAX_PICK - MIN_PICK + 1 ) + MIN_PICK );
    temp += clock;
    return temp;
}

void update_fin_stat(stat& s, const cust& c, const int& clock)
{
    //initialize variables for shop, wait, and service time
    int shop = 0;
    int wait = 0;
    int serv = 0;


    //calculate shop time, wait time, and service time

    //calculate shop time
    shop = c.s_checkout - c.atime; //checkout time - arrival time

    //calculate wait time
    wait = c.wtime;

    //calculate serv time
    serv = dept_time(clock) - c.wtime;

    //update values in struct s
    s.num_dept++;
    s.tot_shop += shop;
    s.tot_wait += wait;
    s.tot_serv += serv;


    //if number departed is multiple of sample int
    if(s.num_dept % SAMPLE_INT == 0)
    {
        cout << "num = " << s.num_dept << " ";
        cout << "id = " << c.id << "     ";
        cout << "shop = " << shop << "  ";
        cout << "wait = " << wait << "  ";
        cout << "serv = " << serv << "  ";
        cout << endl;
    }


}

bool cmp (const cust& c1, const cust& c2)
{
    return c1.s_checkout < c2.s_checkout;
}
void print_fin_stat(stat& s)
{
    //print final stats
    cout << "Number of Customers" << s.num_dept << endl;
    cout << "Total Sim Time " << SIM_TIME << endl;

    //compute averages
    s.avg_shop = s.tot_shop / s.num_dept;
    s.avg_wait = s.tot_wait / s.num_dept;
    s.avg_serv = s.tot_serv / s.num_dept;

    //print averages
    cout << "Average Shop Time" << s.avg_shop << endl;
    cout << "Average Wait Time" << s.avg_wait << endl;
    cout << "Average Serv Time" << s.avg_serv << endl;
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T00:04:06+00:00Added an answer on May 26, 2026 at 12:04 am

    Segmentation faults generally occur when a pointer, reference, or iterator which is pointing to null, unallocated memory, or read-only memory is dereferenced. Most likely, your list<cust>::iterator i is being dereferenced without being initialized.

    Compiling with the -g option and running the program in the debugger (e.g. gdb progname) should get you the line of your code in which the invalid dereference occurs. You must then look to earlier execution to find where the iterator should be set to point at valid memory.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been working with relational databases for sometime, but it only recently occurred
I have been working with Struts for some time, but for a project I
I have been working on a java simulation game for some time (remaking theme
I have been working on this tidy-up-messy-html tags with DOM, but now I realise
I'm a beginner but have been working really hard to build this application. Working
I have been working on a (relatively) simple tcp client/server chat program for my
Situation I have been working on a project lately where the UI development seems
I've been working on optimizing a query and have ran into a situation that's
I have been working on a web services related project for about the last
I have been working with Visual Studio (WinForm and ASP.NET applications using mostly C#)

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.