Editorial for C Bài 6.B2: Vẽ tam giác đều


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence.

Author: buitrunghieu

Lời giải chi tiết

Ý tưởng: Nhìn vào bài này ta có thể thấy rối, nhưng về cơ bản, cách vẽ của bài này gần giống với bài ở b6c1. Chỉ khác ở 2 điểm: Bài này yêu cầu in ra kí tự; Và cần phải in ra hình tam giác cân tương đối nâng cao. Điều quan trọng cần phải nắm là khoảng trống được in ra ở góc trên bên trái tam giác.

Các bước giải:

  • Bước 1: Khai báo và nhập vào số nguyên \(n\).
  • Bước 2: Sử dụng 2 vòng lặp lồng nhau, vòng lặp ở ngoài ta chạy \(i\) từ 1 đến \(n\), vòng lặp ở trong ta chia ra làm 2 vòng lặp con, cái thứ nhất để in ra khoảng trống ở góc trên bên trái tam giác, cái thứ hai để vẽ tam giác.
  • Bước 3: Với 2 vòng lặp ở trong, xét cái đầu tiên, để ý rằng khi ta ép tất cả các dòng của hình tam giác về chung 1 dòng (loại bỏ các kí tự chèn vào nhau), khoảng cách giữa một ô kí tự và ô kí tự gần nó nhất là 2 ô. Nên theo đó, số khoảng trống ở phía góc trên bên phải hình vẽ của một dòng sẽ nhiều hơn dòng bên dưới nó 2 ô, và số khoảng trống ở dòng cuối cùng là 0. Theo đó, ta sẽ cài đặt vòng lặp trong thứ nhất từ phát hiện trên.
  • Bước 4: Với vòng lặp thứ 2, để ý rằng số khoảng trống giữa 2 kí tự gần nhau nhất trong cùng 1 hàng là 3. Nên sau khi in ra kí tự thứ \(j\), ta sẽ in ra 3 dấu cách để tiếp tục cho lần in kí tự tiếp. Với cách in kí tự, ta đặt một biến kí tự tmp bằng kí tự a. Khi in kí tự ta sẽ in ra tmp\(+j-1\).
  • Bước 5: Sau khi thực hiện 2 vòng lặp trong, xuống dòng để tiếp tục vẽ các dòng tiếp theo.

Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse

SĐT liên hệ: 0372229686

Youtube: CLB Lập Trình Full House

Fullhouse dev đồng hành trên từng dòng code


Comments

There are no comments at the moment.

Zalo