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

Arrays: Single and 2D

The document discusses arrays in C, including how to declare single and two-dimensional arrays, how to access elements within arrays using indexes, common array operations like read and write, and how to pass arrays as function parameters. Single dimensional arrays are lists of like-typed elements accessed using a single index, while two-dimensional arrays represent tables with row and column indexes. Operations on arrays are performed on individual elements rather than the array as a whole.

Uploaded by

Kimuel J MAlizon
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT or read online on Scribd
0% found this document useful (0 votes)
87 views

Arrays: Single and 2D

The document discusses arrays in C, including how to declare single and two-dimensional arrays, how to access elements within arrays using indexes, common array operations like read and write, and how to pass arrays as function parameters. Single dimensional arrays are lists of like-typed elements accessed using a single index, while two-dimensional arrays represent tables with row and column indexes. Operations on arrays are performed on individual elements rather than the array as a whole.

Uploaded by

Kimuel J MAlizon
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT or read online on Scribd
You are on page 1/ 29

ARRAYS

Single and 2D
Wh at is an a rra y?

 An array is a group of elements with the same


data type (i.e., it is homogenous)
 An array is characterized by its name,
dimension, size and element data type
 An array has a dimension which we will denote
by d
- when d = 1, we say that the array is 1-
dimensional; it is also referred to as a list
- when d = 2, we say that the array is 2-
dimensional; it is also referred to as a table

Mark De Vera
How d o y ou d eclare a o ne-
di mens ion al arr ay in C?

The syntax is:


<array name> [<index>]

i.e., simply type the array name, followed by the left


square bracket, followed by the array element index and
finally by the corresponding right square bracket.

Key Points!
- the range of values that you can use as array index is
from 0 to <size> - 1
- the first element therefore is <array name>[0]
- the last element is <array name>[<size> - 1]

Mark De Vera
Examples of valid array references
are:

 s[0]
 a[5]
 MyArray[5]

Examples of invalid array element


references are:
 s[-1] // index cannot be negative
 X[2.5] // index cannot be a real number
 Data[1000] // last index should size - 1

Mark De Vera
Wh at oper atio ns can y ou
perfor m on a rrays ?

 Only operations on a per-array element basis are


possible. Operations such as array to array
assignment, or adding two arrays are not supported
by C language.

There are basically two operations that can be


performed on array elements, namely:

 read operation, specifically, read the content of an


array element
 write operation, specifically, overwrite the original
content of an array element

Mark De Vera
Examples of read operations are:

printf(“%d\n”, a[1]);
/* assume that i was declared as an int
variable*/
for (i = 0; i < 1000; i++)
printf(“%lf\n”, Data[i]);

Mark De Vera
Examples of write operations are:

s[0] = ‘c’;
X[2] = 3.1416;
/* assume that i was declared as an int
variable*/
for (i = 0; i < 25; i++)
X[i] = i + 1;

Mark De Vera
Examples of combined read/write
operations are:

M[3] = a[2] + MyArray[10];


Data[55] = X[9]/2.5 * a[1];

Mark De Vera
Can y ou pass arr ays as
parame ters?

 Yes, it’s almost like passing simple variables


as parameters.

 Example: The following code shows an


example of a function that accepts an integer
array as parameter.

 The function simply prints all the elements


from index 0 to n-1.

Mark De Vera
Example 1
void PrintArrayElements(int A[], int n)
{
int i;
for (i = 0; i < n; i++)
printf(“Element number %d\n”, i);
}
void main (void)
{
int MyArray[20], n;
clrscr();
PrintArrayElements(MyArray, 20);
getch();
}

Mark De Vera
Key Points!

- note that the size of the one-


dimensional array is optional in the
parameter declaration
- n in the example function above need
not be the same as the size of the array;
it maybe less than the size but cannot be
more because otherwise a logical error
will occur

Mark De Vera
Example
 The following code shows an example that will add two arrays, i.e., on
a per element basis. The sum will be stored on a third array.

void AddArrays(double C[], double A[], double B[], int n)


{
int i;
for (i =0; i < n; i++)
{
printf(“\nEnter values for A[%d]”,i);
scanf(“%lf”,&A[i]);
printf(“Enter values for B[%d]”,i);
scanf(“%lf”,&B[i]);
C[i]=A[i] + B[i];
printf(“The values for C[%d] = %lf\n”,i,C[i]);
}
}

Mark De Vera
AddArrays() Example…
void main(void)
{
double C[5], A[5], B[5];
int n;
clrscr();
AddArrays(C,A,B,4);
getch();
}

Mark De Vera
How d o y ou d eclare a two-
di mens ion al arr ay in C?

The syntax is:

<data type> <array name> [ <row size> ] [<column size>]

The array elements are arranged in row-


major order.

Mark De Vera
Examples:

int m[3][3];
int MatrixA[3][3];
float MatrixB[4][8];
double Table[5][20];

Mark De Vera
The graphical representation of two-
dimensional array, in the case, for example
of m is shown below.
Ex. int m[3] [3];
2

A graphical representation of a matrix


Mark De Vera
Inside RAM

Mark De Vera
How d o y ou refer en ce a n
el emen t in a tw o-d imen sio nal
arr ay ?

The syntax is:


<array name> [<row index>][<column index>]

Key Points!
- the range of row index is from 0 to <row size> - 1
- the range of column index is from 0 to <column size> - 1
- the first element therefore is <array name>[0][0]
- the last element is <array name>[<row size> - 1][<column size> - 1]

Mark De Vera
Examples of valid array access
are:

printf(“%d\n”, MatrixA[0][2]);
MatrixB[3][1] = 1.25;
Table[0][0] = Table[1][2] + Table[5][1];

Mark De Vera
Examples of invalid array access
are:

printf(“%d\n”, MatrixA[1,2]); // syntax error!


MatrixB[-1][1] = 1.25; // negative index
Table[5.2][0] = 3.1416; // incorrect row index

Mark De Vera
How d o y ou p ass tw o-
di mens ion al arr ay s as function
parame ters?

Basically the same as in the one-dimensional array case, but the size of
the column will have to supplied! It is not optional like the row size.

Example: The following function will print a table with 5 rows and 10
columns.

void PrintTableElements(int A[2][3])


{
int i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 10; j++)
printf(“Row %d, column %d element = %d\n”,i, j, A[i][j]);
}

Mark De Vera
2D Array Example Cont’n…
void main(void)
{
int A[2][3],i,j;
clrscr();

for(i=0;i<2;i++)
for(j=0;j<3,j++)
{
printf(“Enter values: ”);
scanf(“%d”,&A[i][j]);
}
PrintTableElements(A);
getch();
}

Mark De Vera
Key Points!

- normally, a double loop is used as control


structure for processing two-dimensional
array as shown in the previous example
- also, normally, the processing is done
row-by-row, and column-by-column
within the same row

Mark De Vera
Sample Program: (Matrix)
 #include<iostream.h>
 int row, col;

 void InputData(int M[][3])


 {
 for (row=0; row<3; row++){
 for (col=0; col<3; col++){
 cout<<"Input M["<<row<<"]["<<col<<"]:";
 cin>>M[row][col];
 }
 }

Mark De Vera
Continuation:
 }

 void PrintData(int M[][3])


 {
 for(row=0; row<3;row++){
 for (col=0; col<3; col++){
 cout<<M[row][col];
 }
 cout<<"\n";
 }
 }

Mark De Vera
Cont….
 int IdentityMatrix(int M[][3])
 {
 int disp;

 for(row=0; row<3; row++){


 for(col=0; col<3;col++){


if((M[row]==M[col])&&(M[row+1]==M[col+1])&&(M[row+2]==M[col+2])) disp=1;
 else disp=0;
 //else if((M[row]!=M[col])==1 &&) disp=0;

 }

Mark De Vera
Cont….
 }
 return(disp);

 }

 void main(void)
 {
 int M[3][3];
 int count;

Mark De Vera
Cont…

 InputData(M);
 PrintData(M);
 count = IdentityMatrix(M);
 if(count==1)
 cout<<"square matrix\n";
 else if(count==2)
 cout<<"both\n";
 else if(count==0)
 cout<<"inline\n";
 }

Mark De Vera
Mark De Vera

You might also like