-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsquareMatrix.cpp
More file actions
104 lines (87 loc) · 2.51 KB
/
squareMatrix.cpp
File metadata and controls
104 lines (87 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "shapeMatrix.h"
void ShapeMatrix::initializeMatrix()
{
for (int i = MIN_ROWS; i <= MAX_ROWS; i++)
{
for (int j = MIN_COLS; j <= MAX_COLS; j++)
{
m_mat[i][j] = ' ';
}
}
}
void ShapeMatrix::printMatrix()
{
for (int i = MIN_ROWS; i <= MAX_ROWS; i++)
{
for (int j = MIN_COLS; j <= MAX_COLS; j++)
{
cout<<m_mat[i][j];
}
}
}
void ShapeMatrix::putCharInMatrix(const char& i_char, const int& i_x, const int& i_y, const int& i_length)
{
if(i_char!='@')
{
for(int i=i_x; i<i_x+ i_length ;i++)
{
for(int j=i_y; j<i_y+i_length; j++)
{
if( (i==i_x || i== i_x + i_length-1) && ( i>=0 && i<=MAX_ROWS && j>=0 && j<=MAX_COLS) )
{
m_mat[i][j] = i_char;
}
else if( (j==i_y || j==i_y + i_length -1 ) && ( i>=0 && i<=MAX_ROWS && j>=0 && j<=MAX_COLS) )
{
m_mat[i][j] = i_char;
}
else if( i>=0 && i<=MAX_ROWS && j>=0 && j<=MAX_COLS)
{
m_mat[i][j] = ' ';
}
}
}
}
else //if it's a diamond
{
int length = i_length;
int level = 0;
for(int i = 0; i<length+1; i++)
{
if( (i_x >= MIN_ROWS) && (i_x <= MAX_ROWS) && (i_y+i <=MAX_COLS) && (i_y >= MIN_COLS) )
m_mat[i_x][i_y+i] = i_char;
if( (i_x >= MIN_ROWS) && (i_x <= MAX_ROWS) && (i_y<=MAX_COLS) && (i_y-i >= MIN_COLS) )
m_mat[i_x][i_y-i] = i_char;
}
// length--;
if(length!=0)
{
this->putDiamondInMatrixNext(i_x,i_y, length, level+1, i_char);
}
}
}
void ShapeMatrix::putDiamondInMatrixNext(int i_x, int i_y, int i_length, int i_level, char i_char)
{
if( (i_x - i_level>= MIN_ROWS) && (i_x <= MAX_ROWS) && (i_y <=MAX_COLS) && (i_y >= MIN_COLS) )
m_mat[i_x-i_level][i_y] = i_char;
if( (i_x >= MIN_ROWS) && (i_x +i_level <= MAX_ROWS) && (i_y <=MAX_COLS) && (i_y >= MIN_COLS) )
m_mat[i_x+i_level][i_y] = i_char;
for(int i=1;i<i_length; i++)
{
if( (i_x>= MIN_ROWS) && (i_x + i_level <= MAX_ROWS) && (i_y+i<=MAX_COLS) && (i_y >= MIN_COLS) )
m_mat[i_x+i_level][i_y+i] = i_char;
if( (i_x >= MIN_ROWS) && (i_x + i_level <= MAX_ROWS) && (i_y<=MAX_COLS) && (i_y-i>= MIN_COLS) )
m_mat[i_x+i_level][i_y-i] = i_char;
if( (i_x - i_level >= MIN_ROWS) && (i_x <= MAX_ROWS) && (i_y+i<=MAX_COLS) && (i_y>= MIN_COLS) )
m_mat[i_x-i_level][i_y+i] = i_char;
if( (i_x - i_level >= MIN_ROWS) && (i_x <= MAX_ROWS) && (i_y<=MAX_COLS) && (i_y-i>= MIN_COLS) )
m_mat[i_x-i_level][i_y-i] = i_char;
}
i_length--;
if(i_length!=0)
putDiamondInMatrixNext(i_x,i_y,i_length, i_level+1, i_char);
}
char ShapeMatrix::getChar(const int& i_x, const int& i_y)
{
return m_mat[i_x][i_y];
}