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.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
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 ratmp
\(+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