Trong quá trình học tập của các bạn sinh viên, hay tự học bên phía lập trình căn bản này, những bài thử thách về phía logic, như: vẽ tam giác đều, vuông, rỗng,…. đều là những bài tập mà các bạn sẽ có cơ hội gặp rất nhiều.

Hôm nay, DTH Share sẽ chia sẻ code (dùng để tham khảo) cho các bạn về một bài “Xuất hình tam giác đều trong C#”.

Đề bài

Xuất một hình tam giác đều đặc, với n là chiều cao bằng C#

Ta có một đề bài ngắn, dễ gặp trong nhiều bài tập về nhà hoặc có thể là đề thi giữa kỳ/học kỳ. Đây không phải là một dạng bài khó, nó tương đối dễ.

Mặc khác, đây cũng có thể chính là đề bài được đem ra để test khả năng logic của bạn khi đi phỏng vấn sau này đấy.

[Chia sẻ code] – Xuất hình tam giác đều trong C#

Bước 1: Chuẩn bị

Hãy tạo ra một project bằng Visual trước và đặt tên project là “full-triangle”, sau khi tạo, các thư viện sẽ được tự động import vào trong class cho mình.

Hiện tại, chúng mình đang sử dụng Visual Studio 2012, nên sau khi tạo project, các thư viện sẽ được import vào, cùng với namespace và class:

Sau khi, hoàn thành việc tạo project, chúng ta hãy tạo thêm một function khác để tránh làm rối hàm Main của chúng ta.

Chúng ta đặt tên hàm mới là “draw_full_triangle” và được truyền vào một tham biến kiểu int “n” được xem như độ cao của tam giác.

Vậy là chúng ta đã xong phần chuẩn bị, chúng ta hãy cùng bước vào phần triển khai thuật toán xuất tam giác đều trong C#.

Bước 2: Phân tích đề bài và triển code

Một tam giác đều, sẽ có chiều cao và chiều rộng của nó, vậy ta có n là chiều cao và ta cần tìm được chiều rộng của nó. Các bạn có thể hình dung như sau trước.

Với n là độ cao, thì ta gọi r là chiều rộng, với bức hình trên, ta có

  • n = 2 => r = 3
  • n = 5 => r = 9

Và cuối cùng n = 7, thì chúng mình đã cố tình không để số vào, bởi vì chúng mình hy vọng rằng các bạn có thể tự mình tìm ra con số đó. (không đếm dấu sao nha mọi người).

Nếu câu trả lời của bạn là 13. Xin chúc mừng bạn đã tìm ra được công thức tính độ rộng của tam giác là r = n + (n-1). Vậy hãy khai báo nó trong hàm draw_full_triangle.

Giờ, ta có r (chiều rộng) và n (chiều cao), hãy cho vòng for vào để duyệt từng dòng.

Ở đây, mình sẽ chạy 2 vòng 1. Vòng for lớn bên ngoài với nhiệm vụ là chạy qua từng dòng của tam giác, nên ta sẽ chạy n vòng.

Vòng for thứ 2, là để duyệt và xử lý việc biểu tượng ngôi sao sẽ xuất hiện ở đâu, ta cùng phân tích một lần nữa.

Trong hình, ta thấy rõ, việc cách vào trong với một nguyên tắc giảm dần từ dòng đầu tiên đi xuống tới cùng với một tam giác 7 tầng.

Vậy với điều đó, ta có thể tìm ra công thức tính khoảng trống để đặt biểu tượng ngôi sao là:

Biểu tượng ngôi sao sẽ được vẽ từ “n – 1 – i” (với i là thứ tự dòng của tam giác và bắt đầu từ 0), và kết thúc tại “r – (n – 1 – i)”.

Với điều kiện trên, ta sẽ bắt đầu cho code vào vòng for xử lý từng dòng một. Nếu thỏa điều kiện chạy biểu tượng ngôi sao thì ta sẽ cho xuất biểu tượng ngôi sao và ngược lại ta sẽ để khoảng trắng.

Ở hàm main, các bạn hãy code để người dùng có thể nhập một số bất kỳ vào, đây là một ví dụ:

DEMO

Ta chạy demo và cho ra kết quả:

Full Source Code và Git

Link git: https://github.com/dthshare-code/full-triangle.git

Trên đây là bài tham khảo về cách xuất hình tam giác đều trong C#, nếu có bổ sung gì, mọi người hãy comment để chúng mình có thể cải thiện bài viết tốt hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here