C and C++ Programming Resources

Custom Search

Arrays as Data Structure in C/C++ Programming

As discussed in the previous post, there are two types of data structures available to C/C++ programmers. One is already built into the programming language and other one is a bit complex in a sense that it can be implemented using the built in data structures and data types. In C/C++ programming language, built in data structures include Arrays, structures, unions and classes. Some of the examples of complex data structures are Stack, Queue, Linked List, Tree and Graph.

The aim of this first tutorials is to teach you how to declare, initialise and use simple arrays as well as multidimensional arrays. You will also be able to use arrays as data structure in your C/C++ program. So at the end of this tutorial you will be able to answer:

  • What is an array and how you can use it?
  • How to declare and initialise simple arrays?
  • How to declare and initialise multidimensional arrays?
  • How to perform simple operations on arrays?

What is an array?

Array is a very basic data structure provided by every programming language. Let’s talk about an example scenario where we need to store ten employees’ data in our C/C++ program including name, age and salary. One of the solutions is to declare ten different variables to store employee name and ten more to store age and so on. Also you will need some sort of mechanism to get information about an employee, search employee records and sort them. To solve these types of problem C/C++ provide a mechanism called Arrays.

Definition

An array is simply a number of memory locations, each of which can store an item of data of the same data type and which are all referenced through the same variable name. Ivor Horton.

Array may be defined abstractly as finite order set of homogeneous elements. So we can say that there are finite numbers of elements in an array and all the elements are of same data type. Also array elements are ordered i.e. we can access a specific array element by an index.

How to declare an array?

The general form of declaring a simple (one dimensional) array is

array_type variable_name[array_size];

in your C/C++ program you can declare an array like

int Age[10];

Here array_type declares base type of array which is the type of each element in array. In our example array_type is int and its name is Age. Size of the array is defined by array_size i.e. 10. We can access array elements by index, and first item in array is at index 0. First element of array is called lower bound and its always 0. Highest element in array is called upper bound.

In C programming language upper and lower bounds cannot be changed during the execution of the program, so array length can be set only when the program in written.

Age 0

Age 1

Age 2

Age 3

Age 4

Age 5

Age 6

Age 7

Age 8

Age 9

30

32

54

32

26

29

23

43

34

5

Array has 10 elements

Note: One good practice is to declare array length as a constant identifier. This will minimise the required work to change the array size during program development.

Considering the array we declared above we can declare it like

  #define NUM_EMPLOYEE 10
   int Age[NUM_EMPLOYEE];

How to initialise an array?

Initialisation of array is very simple in c programming. There are two ways you can initialise arrays.

  • Declare and initialise array in one statement.
  • Declare and initialise array separately.

Look at the following C code which demonstrates the declaration and initialisation of an array.

  int Age [5] = {30, 22, 33, 44, 25};
   int Age [5];
   Age [0]=30;
   Age [1]=22;
   Age [2]=33;
   Age [3]=44;
   Age [4]=25;

Array can also be initialised in a ways that array size is omitted, in such case compiler automatically allocates memory to array.

  int Age [] = {30, 22, 33, 44, 25};

Let’s write a simple program that uses arrays to print out number of employees having salary more than 3000.

Array in C Programming

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_EMPLOYEE 10

int main(int argc, char *argv[]){
	int Salary[NUM_EMPLOYEE], lCount=0,gCount=0,i=0;
	printf("Enter employee salary (Max 10)\n ");
	for (i=0; i<NUM_EMPLOYEE; i++){
		printf("\nEnter employee salary: %d - ",i+1);
		scanf("%d",&Salary[i]);
	}

	for(i=0; i<NUM_EMPLOYEE; i++){
		if(Salary[i]<3000)
			lCount++;
		else
			gCount++;
	}

	printf("\nThere are {%d} employee with salary more than 3000\n",gCount);
	printf("There are {%d} employee with salary less than 3000\n",lCount);
	printf("Press ENTER to continue...\n");
	getchar();
	return 0;
}

Array in C++ Programming

#include <cstdlib>
#include <iostream>
#define NUM_EMPLOYEE 10

using namespace std;

int main(int argc, char *argv[]){
	int Salary[NUM_EMPLOYEE], lCount=0,gCount=0,i=0;
	cout << "Enter employee salary (Max 10) " << endl;
	for (i=0; i<NUM_EMPLOYEE; i++){
		cout << "Enter employee salary: - " << i+1 << endl;
		cin >> Salary[i];
	}

	for(i=0; i<NUM_EMPLOYEE; i++){
		if(Salary[i]<3000)
			lCount++;
		else
			gCount++;
	}

	cout << "There are " << gCount << " employee with salary more than 3000" << endl
	<< "There are " << lCount << " employee with salary less than 3000" << endl;

	system("PAUSE");
	return EXIT_SUCCESS;
}

How to declare and initialise multidimensional arrays?

Often there is need to manipulate tabular data or matrices. For example if employee salary is increased by 20% and you are required to store both the salaries in your program. Then you will need to store this information into a two dimensional arrays. C/C++ gives you the ability to have arrays of any dimension.

Multi dimension arrays

Consider the example above, you have to store, previous salary, present salary and amount of increment. In that case you will need to store this information in three dimensional arrays.

First I will show you how to declare a two dimensional array and initialise it. Then write a complete program to use multidimensional arrays.

  int Salary[10][2];

This defines an array containing 10 elements of type int. Each of these elements itself is an array of two integers. So to keep track of each element of this array is we have to use two indices. One is to keep track of row and other is to keep track of column.

Elements of multidimensional arrays

Here is a graphical view of multidimensional array that we use to store salary and increment on salary. First column stores the salary element of the array and second column stores increment on salary. We could add another column to store the new salary which adds the increment to the salary.

Column 0 – Salary

Column 1 – Increment

Row 0
Row 2
Row 3
Row 4
Row 5
Row 6
Row 7
Row 8
Row 9
Row 10

Initialising multidimensional arrays

Multidimensional arrays can also be initialised in two ways just like one dimensional array. Two braces are used to surround the row element of arrays.

If you are initialising more than one dimension then you will have to use as many braces as the dimensions of the array are.

int Salary [5][2] = {
	{2300, 460},
	{3400, 680},
	{3200, 640},
	{1200, 240},
	{3450, 690}
}; 

int Salary [5][2] ={0};  //This will  initialise all the array elements to 0 

int Salary [5][2];
Salary [0][0]=2300;
Salary [1][0]=3400;
Salary [2][0]=3200;
Salary [3][0]=1200;
Salary [4][0]=3450;
Salary [0][1]=460;
Salary [1][1]=680;
Salary [2][1]=640;
Salary [3][1]=240;
Salary [4][1]=690;

Here is a complete program written in both C and C++ to demonstrate the use of multidimensional arrays. You can find the whole source code in a zip file at the end of the tutorial. Source code is available in both C and C++ programming languages. Zip file also contains the demonstration of three dimensional arrays.

Demonstration of two dimension arrays

The code below demonstrates two dimension arrays. It uses the same example of employee salary to increment it by 20% and adds it to actual salary then print current salary, increment and new salary.

Two dimensional Array in C Programming

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_EMPLOYEE 10
int main(int argc, char *argv[]){
  //initialise Salary of each employee
  int Salary[NUM_EMPLOYEE][2]={
  	{2300,0},
  	{3400,0},
  	{3200,0},
  	{1200,0},
  	{3450,0},
  	{3800,0},
  	{3900,0},
  	{2680,0},
  	{3340,0},
  	{3000,0}
  };
  int lCount=0,gCount=0,i=0;
  for(i=0; i<NUM_EMPLOYEE; i++){
  	Salary[i][1] = ((Salary[i][0]*20)/100);
  }
  printf("Initial Salary + Increment = Total Salary\n");
  for (i=0; i<NUM_EMPLOYEE; i++){
  	printf("%d\t\t%d\t\t%d\n",Salary[i][0],Salary[i][1],Salary[i][0]+Salary[i][1]);
  }

  printf("Press ENTER to continue...\n");
  getchar();
  return 0;
 }

Two dimensional array in C++ Programming

#include <cstdlib>
#include <iostream>
#define NUM_EMPLOYEE 10
using namespace std;

int main(int argc, char *argv[]){
   //initialise Salary of each employee
   int Salary[NUM_EMPLOYEE][2]={
	   {2300,0},
	   {3400,0},
	   {3200,0},
	   {1200,0},
	   {3450,0},
	   {3800,0},
	   {3900,0},
	   {2680,0},
	   {3340,0},
	   {3000,0}
   };
   int lCount=0,gCount=0,i=0;
   for(i=0; i<NUM_EMPLOYEE; i++){
	   Salary[i][1] = ((Salary[i][0]*20)/100);
   }
   cout << "Initial Salary + Increment = Total Salary" << endl;
   for (i=0; i<NUM_EMPLOYEE; i++){
	   printf("%d\t\t%d\t\t%d\n",Salary[i][0],Salary[i][1],Salary[i][0]+Salary[i][1]);
   }

   system("PAUSE");
   return EXIT_SUCCESS;
}

Download Complete Source Code:

  Arrays as Data Structure (2.2 KiB, 5,586 hits)

Related Tutorials and Source Code on Arrays

Tags: , ,

There are No Comments to this post. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response or TrackBack from your own site.


Leave a Reply

You must be logged in to post a comment.