Identity Diagonal matrix

Write a program to check whether a matrix(use dynamic memory allocation
to create the matrix) is
i)Identity
ii)Diagonal

#include<stdio.h>
#include<conio.h>
#include<alloc.h>
int chkIdentity(int**,int,int);
int chkDiagonal(int**,int,int);
void main()
{
	int **a;
	int noOfRows,noOfCols;
	int i,j;
	int identity,diagonal;
	clrscr();
	printf("\nEnter Number Of Rows: ");
	scanf("%d",&noOfRows);
	printf("\nEnter Number Of Columns: ");
	scanf("%d",&noOfCols);
	if(noOfRows!=noOfCols)
	{
		printf("\nThe Matrix Is Not A Square Matrix So It Cannot Be Verified");
		printf("\nPress Any Key To Exit..");
		getch();
		return;
	}/*End of if*/
	a=(int**)calloc(noOfRows,sizeof(int*));
	for(i=0;i<noOfRows;i++)
		a[i]=(int *)calloc(noOfCols,sizeof(int *));
	printf("\nEnter Elements Of %d X %d Matrix: \n",noOfRows,noOfCols);
	for(i=0;i<noOfRows;i++)
		for(j=0;j<noOfCols;j++)
			scanf("%d",a[i]+j);
	printf("\nThe Matrix You Entered Is: \n");
	for(i=0;i<noOfRows;i++)
	{
		for(j=0;j<noOfCols;j++)
		{
			printf("%d ",a[i][j]);
		}/*End of j for loop*/
		printf("\n");
	}/*End of i for loop*/
	identity=chkIdentity(a,noOfRows,noOfCols);
	diagonal=chkDiagonal(a,noOfRows,noOfCols);
	if(identity==1)
		printf("\nThe Matrix Is An Identity Matrix.");
	else
		printf("\nThe Matrix Is Not An Identity Matrix.");
	if(diagonal)
		printf("\nThe Matrix Is A Diagonal Matrix.");
	else
		printf("\nThe Matrix Is Not A Diagonal Matrix.");
	getch();
}/*End of main()*/
int chkIdentity(int**a,int rows,int cols)
{
	int i,j;
	int count=0;
	for(i=0;i<rows;i++)
	{
		for(j=0;j<cols;j++)
		{
			if(i!=j)
			{
				if(a[i][j]!=0)
					return 0;
			}/*End of if*/
			if(i==j)
			{
				if(a[i][j]==1)
					count++;
			}/*End of if*/
		}/*End of j for loop*/
	}/*End of i for loop*/
	if(count==rows)
		return 1;
	else
		return 0;
}/*End of function int chkIdentity(int**,int,int)*/
int chkDiagonal(int**a,int rows,int cols)
{
	int i,j;
	for(i=0;i<rows;i++)
	{
		for(j=0;j<cols;j++)
		{
			if(i!=j)
			{
				if(a[i][j]!=0)
					return 0;
			}/*End of if*/
			if(i==j)
			{
				if(a[i][j]==0)
					return 0;
			}/*End of if*/
		}/*End of j for loop*/
	}/*End of i for loop*/
	return 1;
}/*End of function int chkDiagonal(int**,int,int)*/

Related posts:

Leave a Reply

Your email address will not be published. Required fields are marked *