cs 192 lecture 10 winter 2003 december 22-23, 2003 dr. shafay shamail
Post on 19-Dec-2015
230 views
TRANSCRIPT
![Page 1: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/1.jpg)
CS 192
Lecture 10
Winter 2003
December 22-23, 2003
Dr. Shafay Shamail
![Page 2: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/2.jpg)
Arrays• An array is a collection of data elements of same type
in contiguous memory e.g. list of names, list of scores• Easier way to compare and use data than having
separate variables for data elements• data_type identifier[size]• int arr[3]
– declares a one-dimensional array named arr with space for 3 integer variables
• Variables contiguous in memory; lowest address has first value, next address has second variable value, and so on
![Page 3: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/3.jpg)
Arrays
• An individual variable within an array is called an element of the array
• The elements of an array are not named, and are accessed by the array’s name and their position in the array (indexing or subcripting)
• Index of first element is zero, index of last element is size-1 e.g. int arr[3] has variables arr[0], arr[1] and arr[2]
• size has to be a positive constant (not variable) i.e. can’t do: int x = 3; int arr[x]; but can do: int arr[3 * 2];
• Number of bytes reserved with int arr[3]; ?
![Page 4: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/4.jpg)
Arrays• An array is an indexed data structure • An array stores a collection of variables• All variables stored in an array are of the same data type• An individual variable within an array is called an
element of the array• An element of an array is accessed using the array name
and an index• The name of the array is the address of the first element.
The index is the offset
![Page 5: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/5.jpg)
Declaring an array
data_type array_name[size];– allocates memory for size variables
– index of first element is 0
– index of last element is size-1
– size must be a constant
![Page 6: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/6.jpg)
Declaring an Array• Example: int list[10];
– allocates memory for 10 integer variables– index of first element is 0– index of last element is 9– C++ does not perform any bounds checking on arrays
list[0]
list[1]
list[9]
![Page 7: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/7.jpg)
Arrays Arrays offer convenient means of grouping
together several related variables
One- dimensional arrays
type var_name[size]
int sample[10];
double d[30];
char ch[100];
![Page 8: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/8.jpg)
Initializing Arrays
• Arrays can be initialized at the time they are declared.
Examples:double taxrate[3] = {0.15, 0.25, 0.3};
char word[] = “hello”; //word has size 6
char list[5] = {‘h’,’e’,’l’,’l’,’o’};
//list of characters, not a string
double vector[100] = {0.0}; //assigns zero to all 100 elements
![Page 9: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/9.jpg)
Initializing Arrays• float f[5]={0.0, 1.0, 2.0, 3.0, 4.0};
// initializes f[0] to 0.0, f[1] to 1.0…f[4] to 4.0• Or• float f[5]; f[0]=0.0; f[1]=1.0; …
• int a[10]={2}; //rest initialized to zero cout << a[0]<< endl << a[5] << endl;
• If no size given, allocates as much as the no. of initializers e.g. int a[] = {5, 2, -9}; // and
int a[3] = {5, 2, -9}; // are equivalent
• Can’t do: int hand[2]; hand[2]={5, 9};• Can’t do: short y[2]={1,2,3,4};
• Don’t confuse:short b[4] and b[4]
![Page 10: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/10.jpg)
Initializing Arrays• for loops used to initialize arrays
#include <iostream.h>
int main() { int t, sample[10]; // this reserves 10 integer
elements // load the array for(t=0; t<10; ++t)
sample[t]=t; // display the array for(t=0; t<10; ++t)
cout << sample[t] << ' ';
return 0; }
![Page 11: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/11.jpg)
Initializing Arraysint a[5];
• Now an indexed variable like a[1] can be used anywhere that a variable of type int can be used
int a[5];cin >> a[4] >> a[2];cout << a[2] << “ “ << a[4] << endl;
cin >> a[3] >> a[0];int max; max = a[3] + a[0]; cout << max << endl;
int next; cin >> next;a[1]= next; cout << a[1] << endl;a[3]= 42; cout << a[3] << endl;
int student = 2;a[student] = 99;cout << a[student] << “ “ << a[2] << endl;
• Also: a[get_index())] = 3; if get_index() returns an int
![Page 12: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/12.jpg)
//Reads in 5 scores, displays max_score and shows //how much each score differs from max_score
int main() {
const int SIZE = 5; int i, score[SIZE], max_score;
cout << “Enter “ << SIZE << “ scores: \n”; cin >> score[0]; max_score = score[0];
for (i=1; i<SIZE; i++) { cin >> score[i]; if (score[i] > max_score)
max_score=score[i]; }
cout << “The highest score is: “ << max_score << endl << “Scores & their difference from highest: \n”;
for (i=0; i<SIZE; i++) { cout << score[i] << “ off by “ << (max_score – score[i]) << endl; } return 0; }
![Page 13: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/13.jpg)
Initializing Arrays• Useful to give a constant name to the size of array
/*const type modifier*/
const int NUM_EMPLOYEES = 10; int salaries[NUM_EMPLOYEES];
for (int i=0; i < NUM_EMPLOYEES; i++)cin >> salaries[i];
• Advantage? Why not use a variable name?• Another way:
# define NUM_EMPLOYEES 10
• And yes, sizeof(salaries); gives what?
![Page 14: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/14.jpg)
Arrays • Total size of an array in bytes?
• Total bytes =
number of bytes in type * number of elements
• e.g. int sample[10];• Has size in bytes = 10 * sizeof(int)
![Page 15: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/15.jpg)
Initializing Arrays• What is wrong with the following?
int num=10;
int iarray[num];
int size;
cin >> size;
int myarray[size];
double darray[5]={3.2, 4.5, 6.7, 324.0, 45.8, 23.1, 34.9}
![Page 16: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/16.jpg)
Assigning One Array to Another
int a[10], b[10];
// ...
a = b; // error -- illegal
/*So how do we make the contents of one array same as the other?*/
![Page 17: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/17.jpg)
Assigning One Array to Another• int a[5], b[5]; // ... a = b; // error – illegal
• Cannot assign one array to another; each element must be copied individually
const int ARRAY_SIZE = 5; int a[] = {10, 11, 12, 13, 14};
int main() { int b[ARRAY_SIZE]; for (int i=0; i < ARRAY_SIZE; ++i) b[i] = a[i]; return 0; }
![Page 18: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/18.jpg)
Assigning Values to an Array•Example
int list[10];int count;
cin >> count;
for(int i=0; i<count; i++)cin >> list[i];
What if count >9?
![Page 19: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/19.jpg)
Summarize Arrays • In C++ all arrays are stored in contiguous memory
locations
• An individual element is accessed by use of an index.
• An index describes the position of an element within an array.
• In C++ all arrays have zero as the index of their first element.
![Page 20: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/20.jpg)
Arrays: Min Max int main()
{
const int SIZE = 10;
int i, min_value, max_value;
int list[SIZE];
for(i=0; i<SIZE; i++)
{
list[i] = rand();
cout<<list[i]<<" ";
}
![Page 21: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/21.jpg)
Arrays // find minimum value
min_value = list[0];
for(i=0; i<SIZE; i++)
{
if (min_value>list[i])
{
min_value = list[i];
}
}
cout << "minimum value: " << min_value << ‘\n’;
![Page 22: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/22.jpg)
Arrays // find maximum value
max_value = list[0];
for(i=0; i<SIZE; i++)
{
if (max_value<list[i])
{
max_value = list[i];
}
}
cout << "maximum value: " << max_value << '\n';
return 0;
} // end of main function
![Page 23: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/23.jpg)
Arrays - No Bounds Checking // An incorrect program. Do Not Execute!
int main()
{ int crash[10], i;
for(i=0; i<100; i++)
crash[i]=i;
return 1;
}
![Page 24: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/24.jpg)
• What is wrong with the following?
char name[5]=”class";
int myarray[];
![Page 25: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/25.jpg)
Arrays
int a[10] = {1,2,3,4,0,3,4,6,7,8};int x=3; y=1;
cout<< a[x+2*y] <<“\n”;
cout<<“Answer= “<<a[a[a[4]]]<<“\n”;
Output?
![Page 26: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/26.jpg)
Sorting an Array• Lots of applications require sorting
• Algorithm for sorting
![Page 27: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/27.jpg)
Sorting an Array
int main(void){
const int SIZE = 10;double darray[SIZE] = {34, 5.6, 0.9, 345.7, 54.1, 23.5, 2.5, 6.78, 12.4, 13.9};int i, j;
for (i=0; i<SIZE-1; i++){
for (j=i+1; j< SIZE; j++){
if (darray[i]>darray[j]){
double temp;temp = darray[i];darray[i] = darray[j];darray[j] = temp;
}}
} //inplace sorting ?return 0;
}
![Page 28: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/28.jpg)
Sorting an Array// Using the bubble sort to order an array.
int main()
{
const int SIZE = 10; int nums[SIZE];
int a, b, t;
// give the array some random initial values
for(t=0; t<SIZE; t++)
nums[t] = rand();
![Page 29: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/29.jpg)
Sorting an Array// This is the bubble sort.
for(a=1; a<SIZE; a++)
{
for(b=SIZE-1; b>=a; b--)
{
if (nums[b-1] > nums[b])
{ // if out of order exchange elements
t = nums[b-1];
nums[b-1] = nums[b];
nums[b] = t;
}
}
} // This is the end of the bubble sort.
} // end of main program
![Page 30: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/30.jpg)
Searching Another Example -
• Sequential Search
• Binary Search
![Page 31: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/31.jpg)
Two Dimensional Arrays
• C++ supports multi-dimensional array– data_type array_name[ROW_SIZE][COLUMN_SIZE]– int matrix[3][4];
row[0]
row[1]
row[2]
row1 row2 row3
in memory
![Page 32: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/32.jpg)
Two-D ArraysRow Major, Col Major
• Row Major Storage row[0]
row[1]
row[2]
row3row2row1
in memory
• Col Major Storage
c[0] c[1] c[2] c[3]
c3c2c1
in memory
c3
![Page 33: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/33.jpg)
Accessing Array Elements
• int matrix[3][4];– matrix has 12 integer elements– matrix[0][0] element in first row, first column– matrix[2][3] element in last row, last column
![Page 34: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/34.jpg)
int main()
{
const int ROWS = 3;
const int COLS = 4;
int i, j, num[ROWS][COLS];
for(i=0; i<ROWS; ++i)
{
for(j=0; j<COLS; ++j)
{
num[i][j] = (i*COLS)+j+1;
cout << num[i][j] << “\t“;
}
cout << “\n”;
}
return 0;
} // output?
Two Dimensional Arrays
![Page 35: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/35.jpg)
Output:1 2 3 45 6 7 89 10 11 12
![Page 36: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/36.jpg)
int main()
{ const int ROWS = 3;
const int COLS = 4;
int i, j, num[ROWS][COLS];
for(i=0; i<ROWS; ++i)
{
for(j=0; j<COLS; ++j)
{
num[i][j] = (i*COLS)+j+1;
cout << num[i][j] << “ “;
}
cout << “\n”;
}
return 0;
} // output?
Two Dimensional ArraysWhat happens if I change [3][4] to [2][6]?
![Page 37: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/37.jpg)
Output:1 2 3 4 5 67 8 9 10 11 12
![Page 38: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/38.jpg)
Two dimensional arrays
int E[][2]={1,2,
3,4};
• Matrix Multiplication
![Page 39: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/39.jpg)
• type name[size1][size2] . . . [sizeN];
• int multidim[4][10][3];
• when multidimensional arrays are used, large amounts of memory are consumed.
Multidimentional Arrays
![Page 40: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/40.jpg)
int sqrs[10][2] = { 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81, 10, 100};
Multidimensional Array Initialization
![Page 41: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/41.jpg)
int main(void){
const int ALPHABETS = 26;char code[ALPHABETS][2] = {
{'a', 'f'}, {'b', 'w'}, {'c', 'x'},{'d', 'v'}, {'e', 's'}, {'f', 'r'},{'g', 'q'}, {'h', 'c'}, {'i', 'g'},{'j', 'h'}, {'k', 'e'}, {'l', 'u'},{'m', 'b'}, {'n', 'j'}, {'o', 'd'},{'p', 'k'}, {'q', 't'}, {'r', 'l'},{'s', 'm'}, {'t', 'n'}, {'u', 'a'},{'v', 'o'}, {'w', 'p'}, {'x', 'z'},{'y', 'i'}, {'z', 'y'}
};
Multidimensional Arrays
![Page 42: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/42.jpg)
int i; char alpha;
cout << "Enter an alphabet: "; cin >> alpha;
for(i=0; i< ALPHABETS; i++) {
if(code[i][0]==alpha) {
cout << "The code of " << alpha << " is ";
cout << code[i][1]<<endl; break;
} } return 0;
} // end of main program
Multidimensional Arrays
![Page 43: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/43.jpg)
Reference
Dietel & Dietel
![Page 44: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/44.jpg)
Case Study:Computing Mean, Median and Mode Using Arrays
• Mean– Average
• Median– Number in middle of sorted list– 1, 2, 3, 4, 5 (3 is median)
• Mode– Number that occurs most often– 1, 1, 1, 2, 3, 3, 4, 5 (1 is mode)
![Page 45: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/45.jpg)
1 // Fig. 4.17: fig04_17.cpp2 // This program introduces the topic of survey data analysis.3 // It computes the mean, median, and mode of the data.4 #include <iostream>56 using std::cout;7 using std::endl;8 using std::ios;910 #include <iomanip>1112 using std::setw;13 using std::setiosflags;14 using std::setprecision;1516 void mean( const int [], int );17 void median( int [], int );18 void mode( int [], int [], int );19 void bubbleSort( int[], int );20 void printArray( const int[], int );2122 int main()23 {24 const int responseSize = 99;25 int frequency[ 10 ] = { 0 },26 response[ responseSize ] = 27 { 6, 7, 8, 9, 8, 7, 8, 9, 8, 9,28 7, 8, 9, 5, 9, 8, 7, 8, 7, 8,29 6, 7, 8, 9, 3, 9, 8, 7, 8, 7,30 7, 8, 9, 8, 9, 8, 9, 7, 8, 9,31 6, 7, 8, 7, 8, 7, 9, 8, 9, 2,32 7, 8, 9, 8, 9, 8, 9, 7, 5, 3,33 5, 6, 7, 2, 5, 3, 9, 4, 6, 4,
![Page 46: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/46.jpg)
34 7, 8, 9, 6, 8, 7, 8, 9, 7, 8,35 7, 4, 4, 2, 5, 3, 8, 7, 5, 6,36 4, 5, 6, 1, 6, 5, 7, 8, 7 };3738 mean( response, responseSize );39 median( response, responseSize );40 mode( frequency, response, responseSize );4142 return 0;43 }4445 void mean( const int answer[], int arraySize )46 {47 int total = 0;4849 cout << "********\n Mean\n********\n";5051 for ( int j = 0; j < arraySize; j++ )52 total += answer[ j ];5354 cout << "The mean is the average value of the data\n"55 << "items. The mean is equal to the total of\n"56 << "all the data items divided by the number\n"57 << "of data items (" << arraySize 58 << "). The mean value for\nthis run is: " 59 << total << " / " << arraySize << " = "60 << setiosflags( ios::fixed | ios::showpoint )61 << setprecision( 4 )62 << static_cast< double >( total ) / arraySize << "\n\n";63 }6465 void median( int answer[], int size )66 {67 cout << "\n********\n Median\n********\n"
![Page 47: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/47.jpg)
68 << "The unsorted array of responses is";
69
70 printArray( answer, size );
71 bubbleSort( answer, size );
72 cout << "\n\nThe sorted array is";
73 printArray( answer, size );
74 cout << "\n\nThe median is element " << size / 2
75 << " of\nthe sorted " << size
76 << " element array.\nFor this run the median is "
77 << answer[ size / 2 ] << "\n\n";
78 }
79
80 void mode( int freq[], int answer[], int size )
81 {
82 int rating, largest = 0, modeValue = 0;
83
84 cout << "\n********\n Mode\n********\n";
85
86 for ( rating = 1; rating <= 9; rating++ )
87 freq[ rating ] = 0;
88
89 for ( int j = 0; j < size; j++ )
90 ++freq[ answer[ j ] ];
91
92 cout << "Response"<< setw( 11 ) << "Frequency"
93 << setw( 19 ) << "Histogram\n\n" << setw( 55 )
94 << "1 1 2 2\n" << setw( 56 )
95 << "5 0 5 0 5\n\n";
Notice how the subscript in frequency[] is the value of an element in response[] (answer[]).
![Page 48: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/48.jpg)
96
97 for ( rating = 1; rating <= 9; rating++ ) {
98 cout << setw( 8 ) << rating << setw( 11 )
99 << freq[ rating ] << " ";
100
101 if ( freq[ rating ] > largest ) {
102 largest = freq[ rating ];
103 modeValue = rating;
104 }
105
106 for ( int h = 1; h <= freq[ rating ]; h++ )
107 cout << '*';
108
109 cout << '\n';
110 }
111
112 cout << "The mode is the most frequent value.\n"
113 << "For this run the mode is " << modeValue
114 << " which occurred " << largest << " times." << endl;
115}
116
117void bubbleSort( int a[], int size )
118{
119 int hold;
120
Print stars depending on value of frequency[]
![Page 49: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/49.jpg)
121 for ( int pass = 1; pass < size; pass++ )
122
123 for ( int j = 0; j < size - 1; j++ )
124
125 if ( a[ j ] > a[ j + 1 ] ) {
126 hold = a[ j ];
127 a[ j ] = a[ j + 1 ];
128 a[ j + 1 ] = hold;
129 }
130}
131
132void printArray( const int a[], int size )
133{
134 for ( int j = 0; j < size; j++ ) {
135
136 if ( j % 20 == 0 )
137 cout << endl;
138
139 cout << setw( 2 ) << a[ j ];
140 }
141}
Bubble sort: if elements out of order, swap them.
![Page 50: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/50.jpg)
4. Program Output
******** Mean********The mean is the average value of the dataitems. The mean is equal to the total ofall the data items divided by the numberof data items (99). The mean value forthis run is: 681 / 99 = 6.8788 ******** Median********The unsorted array of responses is 6 7 8 9 8 7 8 9 8 9 7 8 9 5 9 8 7 8 7 8 6 7 8 9 3 9 8 7 8 7 7 8 9 8 9 8 9 7 8 9 6 7 8 7 8 7 9 8 9 2 7 8 9 8 9 8 9 7 5 3 5 6 7 2 5 3 9 4 6 4 7 8 9 6 8 7 8 9 7 8 7 4 4 2 5 3 8 7 5 6 4 5 6 1 6 5 7 8 7 The sorted array is 1 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 The median is element 49 ofthe sorted 99 element array.For this run the median is 7
![Page 51: CS 192 Lecture 10 Winter 2003 December 22-23, 2003 Dr. Shafay Shamail](https://reader036.vdocument.in/reader036/viewer/2022062308/56649d405503460f94a1a999/html5/thumbnails/51.jpg)
Program Output
******** Mode********Response Frequency Histogram 1 1 2 2 5 0 5 0 5 1 1 * 2 3 *** 3 4 **** 4 5 ***** 5 8 ******** 6 9 ********* 7 23 *********************** 8 27 *************************** 9 19 *******************The mode is the most frequent value.For this run the mode is 8 which occurred 27 times.