0% found this document useful (0 votes)
2 views29 pages

8 2DArray

The document covers the concepts of 2D arrays in programming, including declaration, initialization, and accessing elements. It provides examples of 2D arrays in different data types and includes sample programs for operations such as matrix addition, multiplication, and checking for symmetric and magic squares. The document aims to equip students with the skills to effectively use 2D arrays in problem-solving.

Uploaded by

Vaisakh
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views29 pages

8 2DArray

The document covers the concepts of 2D arrays in programming, including declaration, initialization, and accessing elements. It provides examples of 2D arrays in different data types and includes sample programs for operations such as matrix addition, multiplication, and checking for symmetric and magic squares. The document aims to equip students with the skills to effectively use 2D arrays in problem-solving.

Uploaded by

Vaisakh
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

2 D A R R AY S

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 1


Objectives

To learn and appreciate the following concepts


• 2D Array declaration, initialization
• Programs using 2D arrays

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 2


Session outcome

At the end of session student will be able to


→Declare, initialize and access 2D array
→Write programs using 2D array

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 3


2 dimensional Array

▪It is an ordered table of homogeneous elements.

▪It can be imagined as a two dimensional table made of


elements, all of them of a same uniform data type.

▪It is generally referred to as matrix, of some rows and some


columns.

▪It is also called as a two-subscripted variable.

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 4


2 dimensional Arrays
For example
int marks[5][3];
float matrix[3][3];
char page[25][80];

✓The first example tells that marks is a 2-D array of 5 rows and 3 columns.
✓The second example tells that matrix is a 2-D array of 3 rows and 3 columns.
✓Similarly, the third example tells that page is a 2-D array of 25 rows and 80
columns.

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 5


2 dimensional Arrays
Declaration
type array_name[row_size][column_size];
For example,
int arr [3][5];
✓arr represents a two dimensional array or table having 3 rows and 5
columns and it can store 15 integer values.

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 6


2 Dimensional Arrays
Initialization of two dimensional arrays
type array-name [row size] [col size ] ={list of values};
int table [2][3]={0,0,0,1,1,1};
→ initializes the elements of the first row to zero and the second row to
1.
Initialization is always done row by row.
The above statement can be equivalently written as
int table [2][3]={{0,0,0},{1,1,1}};
OR in matrix form it can be written as
int table [2][3]= { {0,0,0},
{1,1,1} };

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 7


2 Dimensional Arrays
When array is completely initialized with all values, need not necessarily specify
the first dimension.

int table [][3]= { {0,0,0},


{1,1,1 }
};
If the values are missing in an initializer, they are set to zero
int table [2][3]= { {1,1},
{2}
};
will initialize the first two elements of the first row to 1, the first element of the
second row to two, and all other elements to zero.
To set all elements to zero
int table [3][3]={{0},{0},{0}};

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 8


Read a matrix and display it
int main()
{
for(i=0;i<m;i++)
int i, j, m, n, a[100][100];
{
for(j=0;j<n;j++)
printf("enter dimension for a:“);
printf(“%d\t”,a[i][j]);
scanf(“%d %d”,&m,&n);
printf(“\n”);
}
printf(“\n enter elements\n“);
for(i=0;i<m;i++)
return 0;
{
}
for(j=0;j<n;j++)
scanf(“%d”, &a[i][j]);
}

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 9


Addition of two Matrices
#include<stdio.h> if (m!=p||n!=q)
#include<stdlib.h>
{
int main()
printf("cannot add \n“);
{
exit(0); }
int i, j, m, n, p, q, a[10][10],
//Reading the elements
b[10][10], c[10][10];
printf("enter elements for a \n“);
printf("enter dimension for a \n“);
for (i=0;i<m;i++)
scanf(“%d %d”,&m,&n);
for(j=0;j<n;j++)
printf("enter dimension for b\n“);
scanf(“%d”,&a[i][j]);
scanf(“%d %d”,&p,&q);

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 10


Matrix Addition

printf("\n enter elements for b\n)"; //Display


for(i=0;i<p;i++) printf("\n final matrix is \n“);
for(j=0;j<q;j++) for(i=0;i<m;i++)
scanf(“%d”, &b[i][j]); {
//Addition for(j=0;j<n;j++)
for(i=0;i<m;i++)
for(j=0;j<n;j++) printf(“%d”,c[i][j]);
c[i][j]=a[i][j]+b[i][j]; printf("\n“);
}

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 11


Row Sum & Column Sum of a matrix

int a[10][10]; //Row sum


int rowsum[10], colsum[10]; for(i=0;i<m;i++)
printf("enter dimension for a \n“); {
scanf(“%d %d”,&m, &n); rowsum[i]=0;

//Reading for(j=0;j<n;j++)

printf("enter elements for a \n“); rowsum[i]=rowsum[i]+a[i][j];


}
for (i=0;i<m;i++){
printf("\n“);
for(j=0;j<n;j++)
scanf(“%d”, &a[i][j]);
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 12
Row Sum & Column Sum of a matrix
//Display
//Column sum for(i=0;i<m;i++) {

for(j=0;j<n;j++) for(j=0;j<n;j++)

{ printf("\t %d",a[i][j]);

colsum[j]=0; printf(“→")

for(i=0;i<m;i++) printf(“%d\n”,rowsum[i]);
}

colsum[j]=colsum[j]+a[i][j]; printf("\n");
}
for(i=0;i<n;i++)
printf("\t %d",colsum[i]);
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 13
Row Sum & Column Sum of a matrix

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 14


Multiplication of two Matrices
printf("enter elements for a \n“);
#include <stdio.h>
for (i=0;i<m;i++)
int main(){ int i, j, m, n, p, q;
{
int A[10][10], B[10][10],C[10][10];
for(j=0;j<n;j++)
printf("enter dimension for a \n“);
scanf(“%d”, &A[i][j]);
scanf(“%d %d”, &m, &n);
}
printf("\n enter dimension for b\n“);
printf("\n enter elements for b\n“);
scanf(“%d %d”, &p, &q);
for(i=0;i<p;i++)
if(n!=p){
{ for(j=0;j<q;j++)
printf("not multiplicable \n“);
scanf(“%d”, &B[i][j]);
exit(0); }
}
CSE 1071 Problem Solving using Computers (PSUC)-2025-26 23/07/2025 15
Multiplication of two Matrices
for(i=0;i<m;i++) {
for(j=0;j<q;j++) {
C[i][j]=0;
for(k=0;k<n;k++)
C[i][j]=C[i][j]+A[i][k]*B[k][j];
}
}

printf("\n The product matrix is \n“);


for(i=0;i<m;i++){
for(j=0;j<q;j++)
printf(“%d\t“, C[i][j]);
printf("\n“);
}
CSE 1071 Problem Solving using Computers (PSUC)-2025-26 23/07/2025 16
Trace and Norm of a Matrix
Trace is sum of principal diagonal elements of a square matrix.
Norm is Square Root of sum of squares of elements of a matrix.

int trace=0, sum=0,i,j,norm;


for(i=0;i<m;i++){
int m=3,n=3;
for(j=0;j<n;j++)
printf(“enter elements for a \n“); sum=sum + a[ i ][ j]*a[ i ][ j ];
for (i=0;i<m;i++){ }
for(j=0;j<n;j++) norm=sqrt(sum);
scanf(“%d”,&a[i][j]);
} printf(“ trace is %d”, trace );
for(i=0;i<m;i++) printf(“ norm is %d”, norm );
trace=trace + a[i][i];

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 17


Check whether a given Matrix is Symmetric or not

printf("enter dimension \n“); for(i=0; i<m; i++){


scanf(“%d %d”,&m,&n); for(j=0; j<n; j++){

if(m!=n){ if (a[ i ][ j ] != a[ j ][ i ])
printf(“Enter a square matrix \n“); {
exit(0); printf("\n Not symmetric \n”);
} exit(0);
}
}
printf("enter elements \n“);
}
for(i=0; i<m; i++)
printf("\n Matrix is symmetric“);
for(j=0; j<n; j++) return 0;
scanf(“%d”, &a[i][j]); }

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 18


Problem…
Write program to check the given matrix is a magic square or not

A magic square of order n is an arrangement of n²


numbers, usually distinct integers, in a square, such that
the n numbers in all rows, all columns, and both diagonals
sum to the same constant.

A normal magic square contains the integers from 1 to n².

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 19


Magic Square
816 618
//Matrix is Magic square or not 357 753
void main() 492 294
{
int mag[10][10], i, j, row, col, rowsum[10], colsum[10];
int pd=0, sd=0, k, x=0, b[100];
clrscr();
printf("enter dimension \n“);
scanf(“%d %d”,&row,&col);
if(row!=col) // checking for square matrix
{
printf(“matrix is not square”);
exit(0);
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 20
Magic Square
//inputting elements to the array
//checking for uniqueness
printf("\n enter elements for a \n“);
for(k=0; k<x-1; k++)
for(i=0; i<row; i++)
for(j=k+1; j<x; j++)
{
if(b[k]==b[j])
for(j=0; j<col; j++)
{
scanf(“%d”,&mag[i][j]);
printf(“elements are no distinct\n”);
}
printf(“matrix is not magic”);
//copying elements to 1D
exit(0);
for(i=0; i<row; i++)
}
for(j=0; j<col; j++)
b[x++]=mag[i][j];

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 21


Magic Square
//Finding sum of elements on principal Diagonal
for(i=0; i<row; i++)
pd=pd + mag[i][i];
//Row sum
for(i=0; i<row; i++)
{
rowsum[i]=0;
for(j=0;j< col; j++)
rowsum[i]=rowsum[i]+mag[i][j];
//comparing rowsum and principal diagonal sum
if(rowsum[i]!=pd)
{
printf(“matrix is not magic”);
exit(0);
}
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 22
Magic Square
//Finding column sum
for(i=0;i<col;i++)
{ colsum[i]=0;
for(j=0;j<row;j++)
colsum[i]=colsum[i]+mag[j][i];

//comparing Columnsum and principal diagonal sum


if(colsum[i]!=pd){ printf(“matrix is not magic”);
exit(0);
}
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 23
Magic Square
//finding secondary diagonal sum
i=row-1;
k=i;
for(j=col-1;j>=0;j--,i--)
sd=sd+mag[i][k-j];
if(sd!=pd) {
printf(“matrix is not magic”);
exit(0);
}
printf(“Matrix is magic\n”);
return 0;
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 24
Exchange the elements of principal diagonal with secondary diagonal in an N
dimensional Square matrix
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if(i==j){
temp=arr[i][j];
arr[i][j]=arr[i][n-i-1];
arr[i][n-i-1]=temp;
int main(){ }
int i, j, temp, arr[4][4],n; printf("\nModified Matrix:\n“);
for(i=0;i<n;i++){
printf("\nEnter dimension: “); for(j=0;j<n;j++)
scanf(“%d”,&n); printf(" “);
printf(“%d”,arr[i][j]);
printf(“\nEnter elements:\n"); printf("\n“);
for(i=0; i<n; i++) }
for(j=0; j<n; j++) return 0;
scanf(“%d”, arr[i][j]); }
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 25
Exchange the Rows and Columns of a ‘mxn’ matrix
/*read ‘mxn’ matrix */
printf("\nEnter the rows to exchange: “);
scanf(“%d %d”,&r1,&r2);
/*Row exchange r1  r2 */
for(j=0;j<n;j++) {
temp=arr[r1-1][j];
arr[r1-1][j]=arr[r2-1][j];
printf(“\nEnter the cols to exchange: “); arr[r2-1][j]=temp;
scanf(“%d %d”,&c1,&c2); }
/*Column exchange : c1  c2 */
for(i=0;i<m;i++) {
temp=arr[i][c1-1];
arr[i][c1-1]=arr[i][c2-1];
arr[i][c2-1]=temp;
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 26
Syntax
Declaration:
data-type array_name[row_size][column_size];
Initialization of two dimensional arrays:
type array-name [row size] [col size ] ={list of values};

Display a Matrix:
Reading a Matrix:
int a[100][100];
int a[100][100];
for(i=0;i<m;i++){
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf(“%d”,a[i][j]);
for(j=0;j<n;j++)
printf(“ “);
scanf(“%d”,&a[i][j]);
printf(“\n”);
}
}
23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 27
Tutorials

• Write a program to check whether the given matrix is sparse matrix or not.

• Write a program to find the sum of the elements above and below diagonal
elements in a matrix.

• Write a program to find the determinant of a matrix.

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 28


Summary

• 2 Dimensional Arrays

23/07/2025 CSE 1071 Problem Solving using Computers (PSUC)-2025-26 29

You might also like