Problem Statement - Printing Top Left Diagonal Half of Square Matrix Including Diagonal Members.
Write definition for a function UpperHalf(int Mat[4][4]) in C++, which displays the
elements in the same way as per the example shown below.
For example, if the content of the array Mat is as follows:
25 24 23 22
20 19 18 17
15 14 13 12
10 9 8 7
The function should display the content in the following format:
25 24 23 22
20 19 18
15 14
10
Solution
TC++ #5274
void UpperHalf(int Mat[4][4])
{
for (int I=0;I<4;I++)
{
for (int J=0;J<4-I;J++)
cout<<MAT[I][J]<< " " ;
cout<<endl;
}
}
Notes
void UpperHalf(int Mat[4][4]) { for (int I=0;I<4;I++) //This outer loop handles each row { for (int J=0;J<4-I;J++) //This inner loop prints each column of row. With every next row maximum column count is reduced by one. This is achieved by condition J<4-I, First row it prints all columns, second it prints 4-1 = 3 columns and so on. cout<<MAT[I][J]<< ” ” ; // This prints the matrix member cout<<endl; //This prints a line break after each row. } }
There could be other acceptable solutions to this problem like follows.
void UpperHalf(int Mat[4][4])
{
for (int I=0;I<4;I++)
{
for (int J=0;J<4;J++)
if ((I+J)<=3)
cout<<MAT[I][J]<< ” ” ;
cout<<endl;
}
}