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:

ex for 1 JPG

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:

ex for 2 JPG

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

ex for 3 JPG

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:

ex for 4 JPG

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:

ex for 5 JPG

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

Tham khảo
C++ - In tất cả các số chẵn từ 1 đến n được nhập từ bàn phím
C++ - Đảo ngược một số nguyên bất kỳ được nhập từ bàn phím
C++ - In ra hình tam giác với các ký tự *
C++ - In ra màn hình bảng cửu chương của một số nhập từ bàn phím
C++ - Tính giai thừa của một số được nhập từ bàn phím
C++ - Tìm tất cả ước của một số nguyên được nhập từ bàn phím
C++ - Tính lũy thừa của một số nguyên được nhập từ bàn phím
C++ - Tìm ước chung lớn nhất của 2 số nguyên được nhập từ bàn phím