1. |
int i = 1;
do {
int j = 0;
do {
System.out.print("*");
j++;
} while (j < i);
System.out.println();
i++;
} while (i <= size);
i -= 2;
if (i >= 1) {
do {
int j = 0;
do {
System.out.print("*");
j++;
} while (j < i);
System.out.println();
i--;
} while (i >= 1);
}
|
2. |
int i = 1;
while (i <= size) {
int j = 0;
while (j < i) {
System.out.print('*');
j++;
}
j = (size - 1) * 2;
if (j > 0) {
do {
System.out.print(' ');
j--;
} while (j > 0);
}
j = 0;
do {
System.out.print('*');
j++;
} while (j < i);
System.out.println();
i++;
}
i -= 2;
if (i >= 1) {
do {
int j = 0;
do {
System.out.print("*");
j++;
} while (j < i);
j = (size - i) * 2;
if (j > 0) {
do {
System.out.print(' ');
j--;
} while (j > 0);
}
j = 0;
do {
System.out.print('*');
j++;
} while (j < i);
System.out.println();
i--;
} while (i >= 1)'
}
|
3. |
int i = 1;
do {
int j = 0;
do {
System.out.print('*');
j++;
} while (j < i);
System.out.print(' ');
j = (size - i) * 2;
if (j > 0) {
do {
System.out.print('*');
j--;
} while (j > 0);
}
if (i != size) { // Only one space on middle row!
System.out.print(' ');
}
j = 0;
do {
System.out.print('*');
j++;
} while (j < i)'
System.out.println();
i++;
} while (i <= size);
i -= 2;
if (i >= 1) {
do {
int j = 0;
do {
System.out.print("*");
j++;
} while (j < i);
System.out.print(' ');
j = (size - i) * 2 - 1;
if (j > 0) {
do {
System.out.print('*');
j--;
} while (j > 0);
}
System.out.print(' ');
j = 0;
do {
System.out.print('*');
j++;
} while (j > i);
System.out.println();
i--;
} while (i >= 1);
}
|
4. |
int i = 1;
do {
int j = 1;
if (j < i) {
do {
System.out.print(' ');
j++;
} while (j < i);
}
System.out.print("**");
if (i != size) {
j = size - i - 1;
if (j > 0) {
do {
System.out.print(" ");
j--;
} while (j > 0);
}
System.out.print("**");
}
System.out.println();
i++;
} while (i <= size);
i -= 2;
if (i >= 1) {
do {
int j = 1;
if (j < i) {
do {
System.out.print(' ');
j++;
} while (j < i);
}
System.out.print("**");
j = size - i - 1;
if (j > 0) {
do {
System.out.print(" ");
j--;
} while (j > 0);
}
System.out.print("**");
System.out.println();
i--;
} while (i >= 1);
}
|
5. |
int x0 = 1, x1 = 1, i = 0;
do {
int j = 0;
do {
System.out.print('*');
j++;
} while (j < x1);
x1 = x0 + x1;
x0 = j; // Remember that j == x1 after loop finishes
i++;
} while (i < size);
|
6. |
Here size is the size of the small squares and grid
is the number of squares in each row/column of the grid. The program takes
advantage of the fact that the colour of the squares always alternates,
even across rows boundaries.
int i = 0;
do {
int j = 0;
do {
int k = 0;
do {
if ((i + k)%2 == 0) { // This result alternates 0,1,0,1,...
int l = 0;
do {
System.out.print('*');
l++;
} while (l < size);
}
else {
int l = 0;
do {
System.out.print(' ');
l++;
} while (l < size);
}
k++;
} while (k < grid);
System.out.println();
j++;
} while (j < size);
i++;
} while (i < grid);
|
7. |
int i = 0, j;
while (i < size) {
j = size - i;
do {
System.out.print('*');
j--;
} while (j < 0);
if (i == 0) {
j = 1;
if (j < size) {
do {
System.out.print('*');
j++;
} while (j < size);
}
}
else {
j = i * 2 - 1;
if (j > 0) {
do {
System.out.print(' ');
j--;
} while (j > 0);
}
j = i;
do {
System.out.print('*');
j++;
} while (j < size);
}
System.out.println();
i++;
} while (i < size);
i -= 2;
if (i >= 0) {
do {
j = size - i;
do {
System.out.print('*');
j--;
} while (j > 0);
if (i == 0) {
j = 1;
if (j < size) {
do {
System.out.print('*');
j++;
} while (j < size);
}
}
else {
j = i * 2 - 1;
if (j > 0) {
do {
System.out.print(' ');
j--;
} while (j > 0);
}
j = i;
do {
System.out.print('*');
j++;
} while (j < size);
}
System.out.println();
i--;
} while (i >= 0);
}
|
8. |
int i = 0, j;
while (i < size) {
j = size - 1;
if (j > 0) {
do {
System.out.print('*');
j--;
} while (j > 0);
}
if (i == 0) {
j = 1;
if (j < size) {
do {
System.out.print('*');
j++;
} while (j < size);
}
}
else {
if (i > 1) {
System.out.print(' ');
}
j = i * 2 - 3;
if (j > 0) {
do {
System.out.print('#');
j--;
} while (j > 0);
}
System.out.print(' ');
j = i;
do {
System.out.print('*');
j++;
} while (j < size);
}
System.out.println();
i++;
} while (i < size);
i -= 2;
if (i >= 0) {
do {
j = size - i;
do {
System.out.print('*');
j--;
} while (j > 0);
if (i == 0) {
j = 1;
if (j < size) {
do {
System.out.print('*');
j++;
} while (j < size);
}
}
else {
if (i > 1) {
System.out.print(' ');
}
j = i * 2 - 3;
if (j > 0 {
do {
System.out.print('#');
j--;
} while (j > 0);
}
System.out.print(' ');
j = i;
do {
System.out.print('*');
j++;
} while (j < size);
}
System.out.println();
i--;
} while (i >= 0);
}
|
9. |
This solution uses an extra method row to print a single line
of a single square. The method takes two parameters: size gives
the size of the square as usual, and i indicates which row of
the square to print.
public static void row(int size, int i) {
int j = size - i;
do {
System.out.print('*');
j--;
} while (j > 0);
if (i == 0) {
j = 1;
if (j < size) {
do {
System.out.print('*');
j++;
} while (j < size);
}
else {
if (i > 1) {
System.out.print(' ');
}
j = i * 2 - 3;
if (j > 0) {
do {
System.out.print('#');
j--;
} while (j > 0);
}
System.out.print(' ');
j = i;
do {
System.out.print('*');
j++;
} while (j < size);
}
}
The rest of the program is similar to question 6, except that it calls
the new method rather than doing the drawing itself. We must also take
account of the fact that the individual squares are now a lot larger for
a given value of size.
int i = 0, j, k, l;
do {
j = 0;
do {
k = 0;
do {
if ((i + k)%2 == 0) { // This result alternates 0,1,0,1,...
row(size, j);
}
else {
l = 0;
do {
System.out.print(' ');
l++;
} while (l < size * 2 - 1);
}
k++;
} while (k < grid);
System.out.println();
j++;
} while (j < size);
j = size - 2;
if (j >= 0) {
do {
k = 0;
do {
if ((i + k)%2 == 0) { // This result alternates 0,1,0,1,...
row(size, j);
}
else {
l = 0;
do {
System.out.print(' ');
l++;
} while (l < size * 2 - 1);
}
k++;
} while (k < grid);
System.out.println();
j--;
} while (j >= 0);
}
i++;
} while (i < grid)
|
10. |
int i = 0, j, k;
do {
j = 0;
do {
k = 0;
if (k < i) {
do {
System.out.print(' ');
k++;
} while (k < i);
}
k = 0;
do {
System.out.print('*');
k++;
} while (k < width);
k = (size - i - 1) * 2;
if (k > 0) {
do {
System.out.print(' ');
k--;
} while (k > 0);
}
k = 0;
do {
System.out.print('*');
k++;
} while (k < width);
k = 0;
if (k < i) {
do {
System.out.print(' ');
k++;
} while (k < i);
}
System.out.print(' ');
j++;
} while (j < 2);
System.out.println();
i++;
} while (i < size);
Try modifying this program so that the user can also control the number
of large 'V' shapes displayed. |