hello..

i need help with my source code..

the question is...

You are to write a program that simulates trials carried out by rolling some dice. After these trials are

carried out, the computer first displays the results for each outcome along with the average value of all

outcomes. The machine then displays a histogram of the outcomes. Following this final display, the

program is complete. The overall idiom the computer carries out is therefore the generic initialize, process,

display algorithm. Let us look at how the problem statement breaks this idiom down:

initialize

The computer first requests and then extracts an int value from the keyboard that lies between 1000 and

1000000, inclusive. This number should represent the total number of trials to be carried out. Next, the

computer will request the number of dice the user intends to roll for each trial. The value extracted for

this result should be a number between 1 and 4. Once these two values have been extracted (such that they

are both within the specified range), the computer will get an initial seed value for the random number

generator and then use this seed value (a local variable) to carry out the call srand(seed); Finally, the

machine should initialize the relevant elements of the results array-counter to 0.

process

Once all these values have been gotten and assigned (as side effects of initialize), the computer should

simulate the trials by calling the function do_trials. This double function will use the values of tot_trials

and tot_dice to simulate tot_trials trials. Each trial is carried out by simulating a roll of tot_dice dice

whose values are summed and used to return the double to the variable average. The result of each trial

(gotten by calling the int function rollem) is used to increment the proper element of the array counter

results as important side effects of the function.

After control returns from do_trials, the computer should use the elements of results to find the value

of max_result. You can get this value by assigning it to the return result of the function get_max, where

the function itself will return the value of the highest element of results. You need this value to fulfill the

preconditions required for the two display functions to work.

display

The machine needs to call two void functions to carry out the display, show_results and show_histo.

The first function displays the counts of the possible outcomes of the tot_trials carried out for the tot_dice

used. The preconditions for show_results to work are that each of the following values need to have been

determined:

tot_dice, the total number of dice rolled for each trial

tot_trials, the total number of trials that were carried

average, the average value for all the tot_trials

max_result, the value representing the largest number of outcomes

values have been given to the elements of results, an array that counts the number of times each

possible outcome occurred for the tot_trials carried out

The postconditions of this function are that the results for each outcome have been displayed in tabular

form (the numeric display is right justified) along with the statistics of the trials (tot_dice, tot_trials, and

average).

The second function, show_histo, requires the same preconditions as show_results, except that the

value of average is not needed. The postconditions are clearly that the histogram has been displayed. Each

star displayed should represent one of the following outcome counts: 5, 10, 20, 50, 100, 200, 500, 1000,

2000, or 5000. This function needs the value of max_result in order to ensure that no more than 50 stars

are shown for the outcome that had the most occurrences. If you look at the histogram for the first sample

run, you will see from the 2 and 12 outcomes and from the histogram display that the number of stars

shown depends upon a round-off to the nearest representative star value. You will use this information to

plan the display of each line of stars in a smart way.

Note from the sample runs that all display is shown using a font that has even spacing for all the

characters. We do this so that the display looks as it appeared in the dos run, that is, all characters were

evenly spaced. When you copy and paste the text for each sample run, choose the Courier New font with a

font size of 10 to produce the same display as those of my sample runs.

One other thing: you should stop the computer from producing further display after the call to initialize

and the calls to show_results and show_histo with a call to cin.ignore(80,'\n') You make this call to

prevent the computer scroll from breaking up the display in a way that will not allow you to get all the

characters you need on the screen. After each execution of cin.ignore(80,'\n'), copy and paste the screen

contents into the Word file for your sample run(s).

Global consts

To make things simpler, you should define the following global consts (you figure out their values) that

you plan to reference inside the relevant functions:

MIN_TRIALS, representing the minimum number of trials to carry out

MAX_TRIALS, representing the maximum number of trials to carry out

MIN_DICE, representing the minimum number of dice to use

MAX_DICE, representing the maximum number of dice to use

MAX_ELS, use an expression dependent on the value of MAX_DICE to get a value representing the

maximum number of elements you need for your results array.

SCALE, a global array of consts, where the elements are initialized to 5, 10, etc. through 5000. You

will use the elements along with the value of max_result to determine the correct scale to use in

show_histo.

Various and sundry hints

1. Use the auxiliary function get_int, which requires three arguments (a string prompt and a maximum

and minimum value) and employs a do..while seeker, to get values for tot_trials and tot_dice.

2. Apply smart semantics on the index expression(s) for the results array. The 0th element of this array for

a given set of trials should represent the number of times the trials returned a result of tot_dice (all 1s).

The last element that is used should represent the number of times the trial returned a value of

6*tot_dice.

3. do_trials should call the auxiliary function rollem, a function that returns the result of a single trial

when tot_dice dice are rolled. The roll of a single die is given by the code 1 + rand( ), where the

library function rand, as found in the cstdlib library is called. (Note: you will also find the srand

function in this library.)

4. You can get the neat layout in show_results with a call to the function get_spaces where the return

result will tell you how many spaces you need to indent using the manipulator expression

setw(indent_by). The single argument of this function is max_result, and the return result of the

function is assigned to the int variable indent_by. The logic of this function should simply count how

many digits are contained in the value of max_result.

5. The auxiliary function get_star, whose single argument is max_result is called to return a result that

represents how many trials each star on the histogram should represent. The requirement is that the

display for max_result should contain 50 or less stars. You should use a loop that makes references to

the elements of the global array of consts SCALE to get the return result.

6. The void function show_stars has two int arguments, total, representing the total number of outcomes

for a given trial and one_star, representing the number of outcomes a single star represents. Use this

function to display a single line of stars (rounded off to the nearest star) for a given outcome. Clearly,

you must call this function from show_histo, passing in the proper arguments for the function to carry

out the desired

the source code is...

please help me...Code:`#include <cstdlib>`

#include <iostream>

#include <iomanip>

#include <ctime>

using namespace std;

const int scale[] = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000};

/*const int MIN_TRIALS, //Global constants

MAX_TRIALS,

MIN_DICE,

MAX_DICE,

FACE;

*/

const int FACE = 6, //Global constants

MAX_ELS = 24;

void do_trial(int tot_trial, int tot_dice, float &avera);

int average(int oneDice[MAX_ELS], int count[MAX_ELS], int tot_trial);

void display_result( int oneDice[MAX_ELS], int count[MAX_ELS], int tot_trial, int tot_dice, float avera );

void show_histo( int oneDice[MAX_ELS], int count[MAX_ELS], int tot_trial,int tot_dice);

int scale_star(int tot_trial);

void skip_line();

int main()

{

int tot_trial; //initializing total number of trials

int tot_dice; //initializing total number of dices

float avera; //initializing average value

srand(time(0));

// Getting the number of trials

do

{

cout << "Enter total number of trials (1000 - 1000000):";

cin >> tot_trial;

skip_line();

}while( (tot_trial<1000) && (tot_trial>1000000) );

// getting the number of dices

do{

cout<<"Enter number of dice to use (1-4): ";

cin>>tot_dice;

skip_line();

}while( (tot_dice<=1) && (tot_dice>=4) );

do_trial(tot_trial, tot_dice, avera);

return 0;

}

//Performing Trial Runs

void do_trial(int tot_trial, int tot_dice, float &avera)

{

int oneDice[MAX_ELS];

int count[MAX_ELS];

int rollem = 0;

// initializing for count array

for( int g=0; g<MAX_ELS; g++ )

count[g] = 0;

// initializing for oneDice array

for( int i=0; i<MAX_ELS; i++ )

oneDice[i] = i+1;

for( int j=1; j<=tot_trial; j++)

{ // finding the sum of all dice rolled

for(int k=0; k<tot_dice; k++)

rollem = (1 + rand() % FACE);

for(int m=0; m<MAX_ELS; m++)

if(oneDice[m]=rollem)

{

count[m]++;

rollem = 0;

}

}

for( int n=0; n<MAX_ELS; n++ )

cout << oneDice[n] << " " << count[n] << endl;

avera = average( oneDice[], count[], tot_trial);

display_result( oneDice[], count[], tot_trial, tot_dice, avera );

show_histo( oneDice[], count[], tot_trial, tot_dice);

}

//Averaging trials

int average(int oneDice[], int count[], int tot_trial)

{

int sum = 0;

float av;

for( int i=0; i<MAX_ELS; i++ )

sum += (oneDice[i] * count[i]);

av = sum / tot_trial;

return av;

}

//Display results of the actions performed

void display_result( int oneDice[], int count[], int tot_trial, int tot_dice, float avera )

{

int i, j, k, l;

cout << "RESULTS FOR " << tot_trial << " TRIALS WITH " << tot_dice << "DICE: " << endl;

switch(tot_dice){

case 1:

for (i=0; i<6; i++)

cout << " " << oneDice[i] << ": " << setw(4) << count[i] << endl;

break;

case 2:

for (j=1; j<12; j++)

cout << " " << oneDice[j] << ": " << setw(4) << count[j] << endl;

break;

case 3:

for (k=2; k<18; k++)

cout << " " << oneDice[k] << ": " << setw(4) << count[k] << endl;

break;

case 4:

for (l=3; l<24; l++)

cout << " " << oneDice[l] << ": " << setw(4) << count[l] << endl;

break;}

cout << "AVERAGE OF THE " << tot_trial << " TRIALS = " << setw(5) << endl;

}

//Displaying results in Histogram format

void show_histo( int oneDice[MAX_ELS], int count[MAX_ELS], int tot_trial,int tot_dice)

{

int i, j, k, l, sca, ia, ja, ka, la, temp;

cout << "HISTOGRAM FOR " << tot_trial << " TRIALS WITH " << tot_dice << "DICE: " << endl;

sca = scale_star(tot_trial);

switch(tot_dice){

case 1:

for (i=0; i<6; i++)

temp = count[i]

{

cout << " " << oneDice[i] << "|";

for(ia=count[i]; sca > count[i]; count[i] / sca)

cout << "*";

}

cout << endl;

break;

case 2:

for (j=1; j<12; j++)

{

cout << " " << oneDice[j] << "|";

for(ja=count[j]; sca > count[j]; count[j]/sca)

cout << "*";

}

cout << endl;

break;

case 3:

for (k=2; k<18; k++)

{

cout << " " << oneDice[k] << "|";

for(ka=count[k]; sca > count[k]; count[k]/sca)

cout << "*";

}

cout << endl;

break;

case 4:

for (l=3; l<24; l++)

{

cout << " " << oneDice[l] << "|";

for(la=count[l]; sca > count[l]; count[l]/sca)

cout << "*";

}

cout << endl;

break;}

//Scaling the graph

int scale_star(int tot_trial)

{

if(tot_trial >= 1000 && tot_trial<2500)

return 5;

else if(tot_trial >= 2500 && tot_trial<7500)

return 10;

else if(tot_trial >= 7500 && tot_trial<10000)

return 20;

else if(tot_trial >= 10000 && tot_trial<25000)

return 50;

else if(tot_trial >= 25000 && tot_trial<75000)

return 100;

else if(tot_trial >= 75000 && tot_trial<100000)

return 200;

else if(tot_trial >= 100000 && tot_trial<250000)

return 500;

else if(tot_trial >= 250000 && tot_trial<500000)

return 1000;

else if(tot_trial >= 500000 && tot_trial<750000)

return 2000;

else if(tot_trial >= 750000 && tot_trial<=1000000)

return 5000;

}

//Clear line function

void skip_line()

{

cin.ignore(80,'\n');

}

cant figure anything out...