Topics: Multi-subscripted Arrays
The following example is
adapted from the text, and illustrates the use of multi-dimensional arrays in
C++.
// Adapted from Fig. 4.23:
fig04_23.cpp
// Double-subscripted array
example
#include <iostream>
using std::cout;
using std::endl;
const int students = 5; // number of students
const int exams = 4; // number of exams
int maximum(int [][ exams ],
int, int );
double average( int [], int
);
void printArray( int [][
exams ], int, int );
int main()
{
int studentGrades[ students ][ exams ] =
{ { 77, 68, 86, 73 },
{ 96, 87, 89, 78 },
{ 70, 90, 86, 81 },
{
99},
{
100, 72, 64} };
cout << "The array is:\n";
printArray( studentGrades, students, exams );
cout << "\nHighest grade: "
<< maximum( studentGrades, students, exams ) <<
'\n';
for ( int person = 0; person < students; person++ )
cout << "The average grade for student "
<< person << " is "
<< average( studentGrades[ person ], exams )
<< endl;
return 0;
}
// Find the maximum grade
int maximum( int grades[][
exams ], int pupils, int tests )
{
int highGrade = grades[0][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;
}
// Determine the average
grade for a particular student
double average( int
setOfGrades[], int tests )
{
int total = 0;
for ( int i = 0; i < tests; i++ )
total += setOfGrades[ i ];
return static_cast< double >( total ) / tests;
}
// Print the array
void printArray( int
grades[][ exams ], int pupils, int tests )
{
cout << " [0]
[1] [2] [3]";
for ( int i = 0; i < pupils; i++ ) {
cout << "\nstudentGrades[" << i
<< "] ";
for ( int j = 0; j < tests; j++ )
cout << grades[ i ][ j ] ;
cout << endl;
}
}