In: Computer Science
1.Prompts the user for a positive integer >= 0
2.Validates the user input to ensure it is a positive integer >= 0
3.Allocate (dynamically) an array big enough for the data.
4.Load the array with random numbers ranging in value from1 to 100
5.Display the elements of the array (unsorted)
6.Display the elements of the array (sorted)
7. Display the average
8.Display the median
9.Display the mode, if none, display appropriate message
#include <iostream>
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
using namespace std;
// Function prototypes
double median(int *, int);
int mode(int *, int);
int *makeArray(int);
void loadNumberData(int *, int);
void selectionSort(int [], int);
double average(int *, int);
void displayArray(int * numberData, int qtyOfRandomNumbers);
void validateInt(string userIn, int& userInput);
int main()
{
}
//function definitions
//*************************************************
//function displayArray
//this function displays the elements of the array
//use pointer arithmetic to step through the array
//*************************************************
//function validateInt ensures that the user input
//is an integer >= 0
//*************************************************
// Function makeArray *
// This function dynamically allocates an array of*
// ints and returns a pointer to it. The parameter*
// size is the number of elements to allocate. *
//*************************************************
//*************************************************
// Function loadNumberData *
// This function loads the array with random numbers*
//ranging in value from 1 to 100
//use pointer arithmetic to step through the array *
//*************************************************
//*************************************************
// Function selectionSort *
// This function performs the selection sort *
// algorithm on array, sorting it into ascending *
// order. The parameter size holds the number of *
// elements in the array. *
//*************************************************
//**************************************************
// Function median *
// This function displays the median of the values *
// in the array pointed to by the parameter arr. *
// The num parameter holds the number of elements *
// in the array. *
//**************************************************
//*********************************************************
// Function mode *
// This function returns the mode of the array pointed to *
// by arr. The mode is the value that appears most often. *
// The parameter num holds the number of elements in the *
// array. If no element appears more than once, the *
// function returns -1. *
//*********************************************************
//**************************************************
// Function average *
// This function calculates and returns the average*
// of the values in the array arr. num is the *
// number of elements in the array. *
//**************************************************
Answer
#include <iostream>
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
#include <math.h>
using namespace std;
// Function prototypes
int validateInt(string userIn, int& userInput);
int *makeArray(int);
void loadNumberData(int *, int);
void displayArray(int * numberData, int qtyOfRandomNumbers);
void selectionSort(int [], int);
double average(int *, int);
double median(int *, int);
int mode(int *, int);
//main function
int main()
{
string userIn;
int userInput;
abc:
cout<<"\nEnter a Positive Number : ";
cin>>userIn;
if(validateInt(userIn,userInput)==0)
{
int *array=makeArray(userInput);
loadNumberData(array,userInput);
cout<<"\n--------Unsorted Array-------\n";
displayArray(array,userInput);
selectionSort(array,userInput);
cout<<"\n--------Sorted Array-------\n";
displayArray(array,userInput);
cout<<"\nArray Average is :
"<<average(array,userInput);
cout<<"\nArray Median is :
"<<median(array,userInput);
int modeValue=mode(array,userInput);
if(modeValue==0)
cout<<"\n\tNo mode value found..!all unique values in
array";
else
cout<<"\nArray Mode is : "<<modeValue;
}
else
{
cout<<"\n\tIncorrect Number..!! Enter again";
goto abc;
}
return 0;
}
//function definitions
//*************************************************
//function validateInt ensures that the user input
//is an integer >= 0
//*************************************************
int validateInt(string userIn, int& userInput)
{
userInput=std::stoi (userIn);
if(userInput>=0)
return 0;
else
return -1;
}
//*************************************************
// Function makeArray *
// This function dynamically allocates an array of*
// ints and returns a pointer to it. The parameter*
// size is the number of elements to allocate. *
//*************************************************
int *makeArray(int size)
{
int *arr=new int[size];
return arr;
}
//*************************************************
// Function loadNumberData *
// This function loads the array with random numbers*
//ranging in value from 1 to 100
//use pointer arithmetic to step through the array *
//*************************************************
void loadNumberData(int *arr, int size)
{
srand (time(NULL)); /* initialize random seed: */
for(int i=0;i<size;i++)
{
*(arr+i) = rand() % 100 + 1; /* generate random number between 0
and 100: */
}
}
//*************************************************
//function displayArray
//this function displays the elements of the array
//use pointer arithmetic to step through the array
//*************************************************
void displayArray(int * numberData, int qtyOfRandomNumbers)
{
for(int i=0;i<qtyOfRandomNumbers;i++)
{
cout<<" "<<*(numberData+i);
}
}
//*************************************************
// Function selectionSort *
// This function performs the selection sort *
// algorithm on array, sorting it into ascending *
// order. The parameter size holds the number of *
// elements in the array. *
//*************************************************
void selectionSort(int arr[], int size)
{
int pos_min;//pos_min is short for position of min
for (int i=0; i < size-1; i++)
{
pos_min = i;//set pos_min to the current index of array
for (int j=i+1; j < size; j++)
{
if (arr[j] < arr[pos_min])
pos_min=j;
//pos_min will keep track of the index that min is in, this is
needed when a swap happens
}
//if pos_min no longer equals i than a smaller value must have been
found, so a swap must occur
if (pos_min != i)
{
int temp = arr[i];
arr[i] = arr[pos_min];
arr[pos_min] = temp;
}
}
}
//**************************************************
// Function average *
// This function calculates and returns the average*
// of the values in the array arr. num is the *
// number of elements in the array. *
//**************************************************
double average(int *arr, int size)
{
double total=0;
for(int i=0;i<size;i++)
total+=*(arr+i);
return (total/size);
}
//**************************************************
// Function median *
// This function displays the median of the values *
// in the array pointed to by the parameter arr. *
// The num parameter holds the number of elements *
// in the array. *
//**************************************************
double median(int *arr, int size)
{
int middle;
double med;
middle = floor(size / 2.0);
if (size%2==0)
med = (*(arr+middle-1) + *(arr+middle)) / 2.0;
else
med = *(arr+middle);
return med;
}
//*********************************************************
// Function mode *
// This function returns the mode of the array pointed to *
// by arr. The mode is the value that appears most often. *
// The parameter num holds the number of elements in the *
// array. If no element appears more than once, the *
// function returns -1. *
//*********************************************************
int mode(int *arr, int size)
{
int counter1=0,counter2,modevalue;
for(int i=0;i<size;i++)
{
counter2=0;
for(int j=i;j<size;j++)
{
if (*(arr+i)== *(arr+j))
{
counter2++;
}
if (counter2 > counter1)
{
counter1 = counter2;
modevalue = *(arr+i);
}
}
}
if(counter1>1)
return modevalue;
else
return 0;
}
OUTPUT