Download presentation
Presentation is loading. Please wait.
Published byClare Hawkins Modified over 9 years ago
2
Arrays Multi-dimensional initialize & display Sorting Part II
3
Multidimensional Arrays a everything about one dimensional arrays applies a all elements of the same data type [ ] a just need additional sets of [ ] a a 3-D array has rows, columns, and rank
4
Multidimensional Arrays int scores [4] [3] [2]; // assume loaded with 1-24 for(row=0; row<4; row++) { for(col=0; col<3; col++) { for(rank=0; rank<2; rank++) cout<<setw(6)<<scores[row][col][rank]; cout<<endl; // new line for each row }
5
Multidimensional Arrays { cout <<endl; // start a new line { nums[row][col][rank] cout<<setw(6)<<nums[row][col][rank]; cout<<endl;// start a new line } for(rank=0; rank < 2; rank++) for(col=0; col < 3; col++) for(row=0; row < 4; row++)
6
A B C D E 28 40 29 9 14 parallel arrays = two or more arrays in which elements with corresponding indexes are related Parallel Arrays Used when related data is of different data types. grade% of class *
7
Parallel Arrays for(row… for(col… {cout >> “Enter id#”; cin >> id[row][col]; cout >> “Enter grade”; cin >> grade[row][col]; }
8
Sum a Row void main(void) { double nums [3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; double sumRow(double [3] [4]); // prototype cout << “The sum of row 3 is “ << sumRow(nums)<<endl; //function call }
9
Sum a Row double sumRow(double ary[3][4]) { int col; double total=0; for(col = 0; col < 4; col++) total += ary[ ][col]; return total; } * total += ary[2][col]; //enter row #-1 The sum of row 3 is 42 output The sum of row 3 is 42
10
Sum a Column void main(void) { 37 11 double nums [3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; double sumCol(double [3] [4]); // prototype cout << “The sum of column 3 is “ << sumCol(nums) << endl; //function call }
11
Sum a Column double sumCol(double ary[3][4]) { int row; double total=0; for(row = 0; row<3; row++) total += ary[row][ ]; return total; } * total += ary[row][2]; //enter col #-1 The sum of column 3 is 21 output The sum of column 3 is 21
12
Sum All Rows } void sumRow(double ary[3][4]) {int row, col; double total=0; for(row = 0; row < 3; row++) {total = 0;// each row total begins at 0 for(col = 0; col<4; col++) total += ary[row][col]; // enter row # cout << "The sum of row "<<row+1 << " is "<<total<<endl; } cout<<endl; } * 1 X
13
Sum All Columns void sumCol(double ary[3][4]) {int row, col; double total=0; } for(col = 0; col < 4; col++) { total = 0; // each col. total begins at 0 for(row = 0; row < 3; row++) total += ary[row][col];//enter col # cout << "The sum of col " << col+1 << " is " << total << endl; } } cout<<endl; } * 1 3 X
14
Just for fun! A 2-D array has the same number of rows as col. 1.How to sum the diagonals - upper left to lower right? 2.How to sum the diagonals - upper right to lower left? Sum Each Diagonal
15
Sorting Internal Sorts [for small data sets] selection bubble (exchange) External Sorts [for large data sets]
16
Selection Sort index (k)sm_index 02 swap 21, 9 11 swap 13, 13 23 swap 21, 15 34 swap 21, 17 211591317 151791321 915211317 152191317 21159 17
17
Selection Sort void sort(double [5]); void swap(double [5], int, int);// prototypes void main(void) {int index; double my_list[ ] = {21, 13, 9, 15, 17}; sort(my_list); // function call cout<<"\nThe sorted array is: \n"; for(index=0; index<5; index++) cout<<'\t'<<my_list[index]<<endl; }
18
Selection Sort void sort(double testArray[5]) { int n, k, sm_index, moves=0;double smallest; for(k=0; k<4; k++) // size-1 = number of passes {smallest=testArray[k]; sm_index=k; for(n=k+1; n<5; n++) // size = # elem. to look at if(testArray[n]<smallest) {smallest=testArray[n]; sm_index=n; } swap(testArray, sm_index, k);// call to swap() }
19
Selection Sort void swap(double testArray[5], int smaller, int pass) {// pass = current position: k int moves; double temp; temp=testArray[pass]; testArray[pass]=testArray[smaller]; testArray[smaller]=temp; moves++;// not needed for swap }
20
Bubble Sort Put smaller first No change Put smaller first 212513917 2125 917 925211317 925132117
21
Bubble Sort Begin again and put smaller first No change Put smaller first 211791325 172191325 211713925 211791325
22
A Bubble Sort Function void bubble_sort(int array[ ], int length) { int j, k, flag=1, temp; for(j=1; j<=length && flag; j++) { flag=0; // false for(k=0; k < (length-j); k++) { if (array[k+1] > array[k]) // > low to high { temp=array[k+1]; // swap array[k+1]= array[k]; array[k]=temp; flag=1; // indicates a swap }}}} }}}} // has occurred
23
Array Review a is an ordered sequence of data of the same type a can be of any valid data type a can be 1-, 2-, or multi- dimensional a must be declared before used a can be assigned and initialized a element numbering starts at zero
24
Array Review a use for loops to access (nested for multidimentional) a can be passed back and forth between functions a when sent to functions the actual values are manipulated - not a copy (passed by reference)
25
Array Review -1 Write a C++ program that adds equivalent elements of the two-dimensional arrays named first and second. Both arrays should have two rows and three columns. For example, element [1][2] of the resulting array should be the sum of first[1][2] and second[1][2]. first second 161823245277 549111161959 sum 40 70100 70 110 70 *
26
Write a C++ program that finds and displays the maximum value in a two-dimensional array of integers. It should also show the maximum value’s subscripts. The array should be declared as a four-by-five array of integers and initialized. data:16, 22, 99, 4, 18, -258, 4, 101, 5, 98, 105, 6, 15, 2, 45, 33, 88, 72, 46, 3 Array Review - 2
27
Array Review - 3 Write a program which picks the elements in ascending order from a two dimensional matrix (4 by 5) and puts them in a single dimensional array. Display the single dimensional array.
28
There is a 3 by 5 array of grades. Write a program which reads the 15 grades and displays the number of grades below 60, number of grades in the 60's, number or grades in the 70's, number of grades in the 80's, and number of grades 90 or better. Array Review - 4
29
Write a program that finds and displays the maximum value and its indicies in a two- dimensional array of integers. The array should be declared as a 10-row by 20- column array of integers in main(). Array Review - 5
30
Array Review - 6a There is an array of three students each with four exam scores. Assume the scores are known and are: {77, 68, 86, 73}, {96, 87, 89, 78}, {70, 90, 86, 81}. Create a program which will display the lowest grade, the highest grade and the average of the grades to two decimal places.
31
Array Review - 6b #include const int STUDENTS = 3; const int EXAMS = 4; int mini (int [][EXAMS], int, int); int maxi (int [][EXAMS], int, int); float average(int [], int); void printArray(int [][EXAMS], int, int);
32
Array Review - 6c void main(void) { int studentGrades[ STUDENTS ][ EXAMS ] = {{77, 68, 86, 73}, {96, 87, 89, 78}, {70, 90, 86, 81}}; cout << "The array is:" << endl; printArray(studentGrades, STUDENTS, EXAMS ); cout<<endl<<endl<<"Lowest grade: " << mini (studentGrades, STUDENTS, EXAMS ) << endl << "Highest grade: " << maxi (studentGrades, STUDENTS, EXAMS )<<endl; for (int person = 0; person < STUDENTS; person++) cout << "The average grade for student " << person << " is " << setiosflags(ios::fixed | ios::showpoint)<<setprecision(2) << average(studentGrades[person], EXAMS) << endl; }
33
Array Review - 6d int mini(int grades[][EXAMS], int pupils, int tests) { int lowGrade = 100; for (int i = 0; i < pupils; i++) for (int j = 0; j < tests; j++) if (grades[i][j] < lowGrade) lowGrade = grades[i][j]; return lowGrade; } int maxi(int grades[][EXAMS], int pupils, int tests) { int highGrade = 0; for (int i = 0; i < pupils; i++) for (int j = 0; j < tests; j++) if (grades[i][j] > highGrade) highGrade = grades[i][j]; return highGrade; }
34
Array Review - 6e float average(int setOfGrades[], int tests) { int total = 0; for (int i = 0; i < tests; i++) total += setOfGrades[i]; return (float) total / tests; } void prtArray(int grades[][EXAMS], int pupils, int tests) { cout << " [0] [1] [2] [3]"; for (int i = 0; i < pupils; i++) { cout << endl<< "studentGrades[" << i << "] "; for (int j = 0; j < tests; j++) cout << setiosflags(ios::left) << setw(5) << grades[i][j]; }
35
Array Review - 6f function call: average(studentGrades[person], EXAMS) float average(int setOfGrades[], int tests) {int total = 0; for (int i = 0; i < tests; i++) total += setOfGrades[i]; return total }
36
Common Errors ; Not declaring the array ; First element is called zero; last element is one less than the number of elements ; Out of range subscripts - no warning ; Error in the for loop - check the counter ; Not initializing the array
37
Common Errors ; Aggregate operations not allowed ; Omitting array size - permitted only when declared as a formal parameter initialized in the declaration If array is /* in */ only, declare the formal parameter as const to prevent accidental modification
38
Debugging array subscripts recheck array size in declaration, initialization, and for loops Prevention - plan first! Valuation tables Display values with cout C++ Debugger
39
I really hate this darn machine, I wish they would sell it. It never does quite what I want, But only what I tell it. End Note
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.