0% found this document useful (0 votes)
37 views

t11CArraysMultiDimensional Pps

This document discusses multidimensional arrays in C. It defines a double-subscripted array to store student grades for multiple exams. The array is initialized with three students' grades for four exams each. Functions are defined to find the minimum, maximum, and average grades, and to print the array. The program calls these functions to analyze and output the grade data stored in the two-dimensional studentGrades array.

Uploaded by

Mohammed Jeelan
Copyright
© © All Rights Reserved
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views

t11CArraysMultiDimensional Pps

This document discusses multidimensional arrays in C. It defines a double-subscripted array to store student grades for multiple exams. The array is initialized with three students' grades for four exams each. Functions are defined to find the minimum, maximum, and average grades, and to print the array. The program calls these functions to analyze and output the grade data stored in the two-dimensional studentGrades array.

Uploaded by

Mohammed Jeelan
Copyright
© © All Rights Reserved
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
You are on page 1/ 6

Department of Computer and Information Science,

School of Science, IUPUI

CSCI 230

Arrays
Multidimensional Arrays
Dale Roberts, Lecturer
IUPUI
[email protected]

Dale Roberts
Multiple-Dimensional Arrays
Multiple subscripted arrays
Arrays require at least two subscripts to identify a
particular element
ANSI C standard allows at least 12 array subscripts
A: scalar A[0]: 1D array A[0][0]: (2 subscripts)
1-Dimensional vector 2D array (matrix)
2D Arrays 2-dimensional vector

Tables with rows and columns (m by n array)


Like matrices: specify row, then column
Column 0 Column 1 Column 2 Column 3
Row 0 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
Row 1 a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]
Row 2 a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]

Column subscript
Array
name Row subscript A common error is to use
math matrix notation a(1,2)
Dale Roberts
Multiple-Subscripted Arrays
Initialization 1 2

int b[2][2] = {{ 1, 2 }, { 3, 4 } }; 3 4

int c[3][2] = {{ 1, 2 }, { 3, 4 }, { 5, 6 }};


1 2
Actual storage in the memory -
3 4 1 2 3 4 5 6
rows by rows -row-major
5 6

Initializers grouped by row in braces


If not enough, unspecified elements set to zero
int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };
1 0
Referencing elements
3 4
Specify row, then column
printf( "%d", b[ 0 ][ 1 ] );

Dale Roberts
1 /* Fig. 6.22: fig06_22.c
2
3
Double-subscripted array example */
#include <stdio.h>
const indicates that the function
4 #define STUDENTS 3 does not modify the array.
5 #define EXAMS 4
6
7 int minimum( const int [][ EXAMS ], int, int );
Initialize variables
8 int maximum( const int [][ EXAMS ], int, int );
9 double average( const int [], int ); Define functions to take double
10 void printArray( const int [][ EXAMS ], int, int ); scripted arrays
11
12 int main() Each row is a particular student, each column is the
grades on the exam. Proper naming of the #defined
13 {
constants is important to convey meaning.
14 int student;
15 const int studentGrades[ STUDENTS ][ EXAMS ] =
16 { { 77, 68, 86, 73 },
Initialize studentgrades[][]
17 { 96, 87, 89, 78 },
18 { 70, 90, 86, 81 } };
19
20 printf( "The array is:\n" );
21 printArray( studentGrades, STUDENTS, EXAMS );
22 printf( "\n\nLowest grade: %d\nHighest grade: %d\n",
23 minimum( studentGrades, STUDENTS, EXAMS ),
Call functions minimum,
24 maximum( studentGrades, STUDENTS, EXAMS ) ); maximum, and average
25
26 for ( student = 0; student <= STUDENTS - 1; student++ )
27 printf( "The average grade for student %d is %.2f\n",
28 student,
29 average( studentGrades[ student ], EXAMS ) );
30
31 return 0;
32 }
Dale Roberts
33
34 /* Find the minimum grade */
35 int minimum( const int grades[][ EXAMS ],
36 int pupils, int tests ) Why is it important to initialize
37 { lowGrade to the highest possible grade,
38 int i, j, lowGrade = 100;
and highGrade to the lowest possible
39
40 for ( i = 0; i <= pupils - 1; i++ ) grade?
41 for ( j = 0; j <= tests - 1; j++ )
42 if ( grades[ i ][ j ] < lowGrade )
43 lowGrade = grades[ i ][ j ];
44
45 return lowGrade;
46 }
47
48 /* Find the maximum grade */
49 int maximum( const int grades[][ EXAMS ],
50 int pupils, int tests )
51 {
52 int i, j, highGrade = 0;
53
54 for ( i = 0; i <= pupils - 1; i++ )
55 for ( j = 0; j <= tests - 1; j++ )
56 if ( grades[ i ][ j ] > highGrade )
57 highGrade = grades[ i ][ j ];
58
59 return highGrade;
60 }
61
62 /* Determine the average grade for a particular exam */
63 double average( const int setOfGrades[], int tests )
64 {
Dale Roberts
65 int i, total = 0;
66
67 for ( i = 0; i <= tests - 1; i++ )
68 total += setOfGrades[ i ];
69
70 return ( double ) total / tests;
71 }
72
73 /* Print the array */
74 void printArray( const int grades[][ EXAMS ],
75 int pupils, int tests ) Define function
76 {
77 int i, j;
78
79 printf( " [0] [1] [2] [3]" );
80
81 for ( i = 0; i <= pupils - 1; i++ ) {
82 printf( "\nstudentGrades[%d] ", i );
83
84 for ( j = 0; j <= tests - 1; j++ )
85 printf( "%-5d", grades[ i ][ j ] );
86 }
87 }

The array is:


Program Output [0] [1] [2] [3]
studentGrades[0] 77 68 86 73
studentGrades[1] 96 87 89 78
studentGrades[2] 70 90 86 81
Lowest grade: 68
Highest grade: 96
The average grade for student 0 is 76.00
The average grade for student 1 is 87.50
The average grade for student 2 is 81.75

Dale Roberts

You might also like