Ở đây chúng ta sẽ xem cách tạo mẫu kim tự tháp rỗng (hollow pyramid) và kim cương (diamond) bằng C++. Chúng ta có thể tạo mẫu kim tự tháp đặc (solid) rất dễ dàng. Để làm cho nó rỗng, ta phải thêm một vài thủ thuật nhỏ.
Kim tự tháp rỗng (Hollow Pyramid)
Đối với kim tự tháp, ở dòng đầu tiên nó in một dấu sao, và ở dòng cuối cùng nó in n dấu sao. Đối với các dòng khác, nó in chính xác hai dấu sao ở vị trí bắt đầu và kết thúc của dòng, và sẽ có một số khoảng trống giữa hai dấu sao này.
Mã ví dụ
#include <iostream>
using namespace std;
int main() {
int n, i, j;
cout << "Nhập số dòng: ";
cin >> n;
for(i = 1; i <= n; i++) {
for(j = 1; j <= (n-i); j++) {
cout << " ";
}
if(i == 1 || i == n) {
for(j = 1; j <= i; j++) {
cout << "* ";
}
} else {
cout << "*";
for(j = 1; j <= 2*i-3; j++) {
cout << " ";
}
cout << "*";
}
cout << endl;
}
return 0;
}
Kết quả đầu ra

Kim cương rỗng (Hollow Diamond)
Đối với kim cương, ở dòng đầu tiên và dòng cuối cùng nó in một dấu sao. Đối với các dòng khác, nó in chính xác hai dấu sao ở đầu và cuối dòng, và có khoảng trống giữa chúng. Kim cương có hai phần: nửa trên và nửa dưới. Ở nửa trên ta phải tăng số khoảng trống, và nửa dưới ta phải giảm số khoảng trống. Số dòng có thể chia làm hai phần bằng biến khác gọi là mid.
Mã ví dụ
#include <iostream>
using namespace std;
int main() {
int n, i, j, mid;
cout << "Nhập số dòng: ";
cin >> n;
if(n % 2 == 1) {
n++;
}
mid = (n/2);
for(i = 1; i <= mid; i++) {
for(j = 1; j <= (mid-i); j++) {
cout << " ";
}
if(i == 1) {
cout << "*";
} else {
cout << "*";
for(j = 1; j <= 2*i-3; j++) {
cout << " ";
}
cout << "*";
}
cout << endl;
}
for(i = mid+1; i < n; i++) {
for(j = 1; j <= i-mid; j++) {
cout << " ";
}
if(i == n-1) {
cout << "*";
} else {
cout << "*";
for(j = 1; j <= 2*(n - i)-3; j++) {
cout << " ";
}
cout << "*";
}
cout << endl;
}
return 0;
}
Kết quả đầu ra
