0% found this document useful (0 votes)
86 views15 pages

Ch7 Multi Dimensional Arrays

This document discusses multidimensional arrays and provides examples of how they can be used to represent real-world data with multiple dimensions, such as chairs in a classroom (rows and columns), a student's course schedule (hours and days), and pixel colors on a screen (width and height). Multidimensional arrays allow problems involving physical contexts with multiple dimensions to be modeled by storing data in an array structure with an index for each dimension. The examples demonstrate declaring and initializing multidimensional arrays to represent different types of multi-dimensional data.

Uploaded by

akirank1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
86 views15 pages

Ch7 Multi Dimensional Arrays

This document discusses multidimensional arrays and provides examples of how they can be used to represent real-world data with multiple dimensions, such as chairs in a classroom (rows and columns), a student's course schedule (hours and days), and pixel colors on a screen (width and height). Multidimensional arrays allow problems involving physical contexts with multiple dimensions to be modeled by storing data in an array structure with an index for each dimension. The examples demonstrate declaring and initializing multidimensional arrays to represent different types of multi-dimensional data.

Uploaded by

akirank1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 15

CMPE 150: Introduction

to Computing

Multidimensional
Arrays
Motivation
• If the problem implies a physical context
of several dimensions, a multidimensional
array may be used.
– Chairs in a classroom
– Rooms on different floors of a building
– Coordinates on a map
– Coordinates in space
– A timetable (hours versus days)

TT - Spring'08 CMPE150: Introduction to Computing 2


2D Arrays
• In a classroom where the chairs are
organized as a grid of 8 rows and 10
columns
int chair[8][10];
for (i=0; i<8; i++)
for (j=0; j<10; j++)
scanf("%d",&chair[i][j]);

TT - Spring'08 CMPE150: Introduction to Computing 3


Example #1
• Construct a student's timetable. Read
course code (assume all courses have
distinct codes).
int table[8][5];
for (i=0; i<8; i++)
for (j=0; j<5; j++)
scanf("%d",&table[i][j]);

TT - Spring'08 CMPE150: Introduction to Computing 4


Example #2
• Store a map of every pixel on the screen
(256 colors/pixel). Assume a resolution
of 1024x768.
unsigned char screen[1024][768];

TT - Spring'08 CMPE150: Introduction to Computing 5


Example #3
• Read the number of inhabitants in every
flat in a building. Assume there are 10
floors with 5 flats in every floor. Find
the flats that have occupancy above the
average.

TT - Spring'08 CMPE150: Introduction to Computing 6


Example #3
int flat[10][5], i, j, sum=0;
float avg;

for (i=0; i<10; i++)


for (j=0; j<5; j++)
{ scanf("%d", &flat[i][j]);
sum += flat[i][j];
}
avg = sum/50.0;
for (i=0; i<10; i++)
for (j=0; j<5; j++)
if (flat[i][j]>avg)
printf("On floor %d, in flat %d\n",i,j);

TT - Spring'08 CMPE150: Introduction to Computing 7


Example #4
• Mark every soldier with "1" on a map.
Rest is all zeros.
• Find the coordinates of all soldiers that
can reach a given coordinate in 10 steps.

TT - Spring'08 CMPE150: Introduction to Computing 8


Example #4
#define ABS(x) ((x)<0) ? -(x) : (x)
int map[1000][1000], int coord_x, coord_y, i, j;

for (i=0; i<1000; i++)


for (j=0; j<1000; j++)
scanf("%d", &map[i][j]);

scanf("%d %d", &coord_x, &coord_y); /* Read coordinates*/

for (i=coord_x-10; i<=coord_x+10; i++)


for (j=coord_y-10; j<=coord_y+10; j++)
if (map[i][j])
if ((ABS(coord_x-i)+ABS(coord_y-j) <= 10)
printf("%d %d", i, j);

TT - Spring'08 CMPE150: Introduction to Computing 9


Example #5
• Find the number of cell phones in the
coverage of a base station. Assume cell
radius is 20 units.

TT - Spring'08 CMPE150: Introduction to Computing 10


Example #5
#define SQR(x) (x)*(x)
int map[1000][1000], int BS_x, BS_y, i, j, count=0;

for (i=0; i<1000; i++)


for (j=0; j<1000; j++)
scanf("%d", &map[i][j]);

scanf("%d %d", &BS_x, &BS_y); /* BS coordinates*/

for (i=BS_x-20; i<=BS_x+20; i++)


for (j=BS_y-20; j<=coord_y+20; j++)
if (SQR(BS_x-i)+SQR(BS_y-j) <= 400)
count++;
printf("%d cell phones in the cell\n", count);

TT - Spring'08 CMPE150: Introduction to Computing 11


3D Array
• Store the day-of-the-week info for all
days in for three years.
enum day_of_week {SUN,MON,TUE,WED,THU,FRI,SAT,SUN};
enum month {JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC};

enum day_of_week day[3][12][31];

day[0][MAY][19]=MON;

TT - Spring'08 CMPE150: Introduction to Computing 12


4D Arrays
• As ATC, you want to check if the route
of a plane is valid.
#define T 100
#define X 200
#define Y 200
#define Z 100
int space[T][X][Y][Z];
...
for (t=0; t<T; t++)
{ scanf("%d %d %d", &x, &y, &z);
if (space[t][x][y][z])
printf("There is an other plane at the coordinates"
"(%d,%d,%d) at time %d\n", x,y,z,t);
}

TT - Spring'08 CMPE150: Introduction to Computing 13


More Dimensions
• Store the grade from each question in
each exam for each course of all
students.
int question[1000][40][3][5];

TT - Spring'08 CMPE150: Introduction to Computing 14


More Dimensions
• Calculate the monthly salary of each
worker. 10YTL/hr.
int work[100][12][31][24];
int worker, month, day, hour;
float salary;

... /* Initialize work array */

for (worker=0; worker<100; worker++)


{ salary=0;
for (month=0; month<12; month++)
for (day=0; day<31; day++)
for (hour=0; hour<24; hour++)
salary += 10.0*work[worker][month][day][hour]/60.0;
printf("Salary for Month #%d is %f\n", month, salary);
}
TT - Spring'08 CMPE150: Introduction to Computing 15

You might also like