Figury mogą wyglądać skomplikowanie na pierwszy
rzut oka, jednak sposób rozwiązania zadań jest prosty.
Należy daną figurę rozłożyć na najprostsze elementy
składowe, napisać dla nich warunki logiczne, po czym
połączyć te warunki operatorem ||.
Rozwiążmy dla przykładu
zadanie nr 8:
XXXXXXXXXX
X.X.X...XX
XX.X...X.X
X.X.X.X..X
XX.X.X...X
X...X.X.XX
X..X.X.X.X
X.X...X.XX
XX...X.X.X
XXXXXXXXXX
Figurę rozkładamy:
j i0123456789
0
XXXXXXXXXX
1
X.X.X...XX
2
XX.X...X.X
3
X.X.X.X..X
4
XX.X.X...X
5
X...X.X.XX
6
X..X.X.X.X
7
X.X...X.XX
8
XX...X.X.X
9
XXXXXXXXXX |
|
|
j i0123456789
0
XXXXXXXXXX
1
..........
2
..........
3
..........
4
..........
5
..........
6
..........
7
..........
8
..........
9
XXXXXXXXXX |
|
((j == 0) || (j == n - 1)) |
j i0123456789
0
X........X
1
X........X
2
X........X
3
X........X
4
X........X
5
X........X
6
X........X
7
X........X
8
X........X
9
X........X |
|
((i == 0) || (i == n - 1)) |
j i0123456789
0
.........X
1
........X.
2
.......X..
3
......X...
4
.....X....
5
....X.....
6
...X......
7
..X.......
8
.X........
9
X......... |
|
(i == n - 1 - j) |
j i0123456789
0
.X.X......
1
X.X.X.....
2
.X.X......
3
X.X.X.....
4
.X.X......
5
..........
6
..........
7
..........
8
..........
9
.......... |
|
((i < n/2) && (j < n/2) && ((i+j) % 2)) |
j i0123456789
0
..........
1
..........
2
..........
3
..........
4
..........
5
......X.X.
6
.....X.X.X
7
......X.X.
8
.....X.X.X
9
......X.X. |
|
((i >= n/2) && (j >= n/2) && ((i+j) % 2)) |
Mając cząstkowe wyrażenia, tworzymy program:
// Ćwiczenie nr 8
//---------------
#include <iostream>
using namespace std;
int main()
{
int n, i, j, lk = 0;
cout << "n = "; cin >> n;
for(j = 0; j < n; j++)
{
for(i = 0; i < n; i++)
if(((j == 0) || (j == n - 1))||
((i == 0) || (i == n - 1))||
(i == n - 1 - j)||
((i < n/2) && (j < n/2) && ((i+j) % 2))||
((i >= n/2) && (j >= n/2) && ((i+j) % 2)))
cout << "X";
else
{
cout << ".";
lk++;
}
cout << endl;
}
cout << "Liczba kropek = " << lk << endl;
return 0;
}
|
i otrzymujemy następujący wynik:
n = 30
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X.X.X.X.X.X.X.X.............XX
XX.X.X.X.X.X.X.............X.X
X.X.X.X.X.X.X.X...........X..X
XX.X.X.X.X.X.X...........X...X
X.X.X.X.X.X.X.X.........X....X
XX.X.X.X.X.X.X.........X.....X
X.X.X.X.X.X.X.X.......X......X
XX.X.X.X.X.X.X.......X.......X
X.X.X.X.X.X.X.X.....X........X
XX.X.X.X.X.X.X.....X.........X
X.X.X.X.X.X.X.X...X..........X
XX.X.X.X.X.X.X...X...........X
X.X.X.X.X.X.X.X.X............X
XX.X.X.X.X.X.X.X.............X
X.............X.X.X.X.X.X.X.XX
X............X.X.X.X.X.X.X.X.X
X...........X...X.X.X.X.X.X.XX
X..........X...X.X.X.X.X.X.X.X
X.........X.....X.X.X.X.X.X.XX
X........X.....X.X.X.X.X.X.X.X
X.......X.......X.X.X.X.X.X.XX
X......X.......X.X.X.X.X.X.X.X
X.....X.........X.X.X.X.X.X.XX
X....X.........X.X.X.X.X.X.X.X
X...X...........X.X.X.X.X.X.XX
X..X...........X.X.X.X.X.X.X.X
X.X.............X.X.X.X.X.X.XX
XX.............X.X.X.X.X.X.X.X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Liczba kropek = 560
|