C++ - In ra hình tam giác với các ký tự *

Viết một chương trình in ra hình tam giác như sau:

Với số dòng được nhập từ bàn phím.

Bài giải

-------------------- ######## --------------------

Cách giải bài toán trên như sau:

  • Nhập số dòng từ bàn phím, ta gọi biến đó là soDong
  • Sử dụng vòng lặp for để lặp qua các dòng từ 1 đến soDong, cú pháp của vòng lặp là for(int i = 1; i <= soDong; i++) 
  • Sử dụng vòng lặp for để lặp từ 1 đến i để in các ngôi sao cho từng dòng, cú pháp của vòng lặp là for(int j = 1; j <= i; j++)
  • Sau khi in tất cả ngôi sao cho 1 dòng sẽ xuống dòng, ví dụ cout << endl

Chúng ta sẽ giải bài toán trên bằng cách sử dụng vòng lặp for trong C++ như sau:

#include <iostream>
using namespace std;

int main()
{
    int soDong;
    cout << "Nhap so dong: ";
    cin >> soDong;
    for(int i = 1; i <= soDong; i++) {
        //in so ky tu sao
        for(int j = 1; j <= i; j++) {
            cout << "*";
        }

        //xuong dong ke tiep
        cout << endl;
    }
    return 0;
}

Và kết quả khi thực thi chương trình trên như sau:

Khi nhập số dòng là 8:

Khi nhập số dòng là 3:

Tương tự chúng ta sẽ viết chương trình để in các hình tam giác sau:

Tam giác hình kim tự tháp:

Chương trình sử dụng vòng lặp for để in hình trên như sau:

#include <iostream>
using namespace std;

int main()
{
    int soDong;
    cout << "Nhap so dong: ";
    cin >> soDong;
    for(int i = 1; i <= soDong; i++) { 
        // in ky tu khoang trang
        for(int j = i; j < soDong; j++) {
            cout << " ";
        }

        // in ky tu ngoi sao
        for(int j = 1; j <= (2*i-1); j++) {
            cout << "*";
        }

        // xuong dong ke tiep
        cout << endl;
    }
    return 0;
}

Tam giác hình kim tự tháp ngược:

Chương trình sử dụng vòng lặp for để in hình trên như sau:

#include <iostream>
using namespace std;

int main()
{
    int soDong;
    cout << "Nhap so dong: ";
    cin >> soDong;
    for(int i = 1; i <= soDong; i++)
    {
        // in ky tu khoang trang
        for(int j = 1; j < i; j++)
        {
            cout << " ";
        }

        // in ky tu ngoi sao
        for(int j = 1; j <= (soDong*2 -(2*i-1)); j++)
        {
            cout << "*";
        }

        // xuong dong ke tiep
        cout << endl;
    }
    return 0;
}

Như vậy bài toán in hình không khó, chúng ta chỉ cần nhìn hình và tìm ra quy luật của nó là gì là có thể giải quyết được bài toán.

Nguồn: freetuts.net