[Lập trình C] In pattern sử dụng vòng lặp (Phần 2)

Friday, May 15, 2020
Edit this post


Tiếp theo của dạng bài vẽ pattern sử dụng vòng lặp, hôm nay chúng ta sẽ đến với 2 bài tập (44 và 45) được trích trong quyển "250 bài tập kỹ thuật lập trình C" của tác giả Dương Thiên Tứ.

Các dạng bài vẽ tam giác trong tiếng Anh có tên gọi "pyramid pattern". Các bạn có thể google từ khoá này để tìm hiểu thêm về các đề bài khác, rất đa dạng và phong phú.

Vẽ tam giác bằng ký tự '*'

Bài thứ nhất là một bài tập huyền thoại của môn kỹ thuật lập trình: vẽ tam giác cân đặc và rỗng bằng ký tự '*' có độ cao n nhập từ bàn phím.


n=9                                                                                                                              
                *                                                                                                                
              * * *                                                                                                              
            * * * * *                                                                                                            
          * * * * * * *                                                                                                          
        * * * * * * * * *                                                                                                        
      * * * * * * * * * * *                                                                                                      
    * * * * * * * * * * * * *                                                                                                    
  * * * * * * * * * * * * * * *                                                                                                  
* * * * * * * * * * * * * * * * *                                                                                                
                *                                                                                                                
              *   *                                                                                                              
            *       *                                                                                                            
          *           *                                                                                                          
        *               *                                                                                                        
      *                   *                                                                                                      
    *                       *                                                                                                    
  *                           *                                                                                                  
* * * * * * * * * * * * * * * * *

Bài tập này không khó nhưng rất tốt để rèn luyện tư duy phân tích khi mới bắt đầu học lập trình. Điểm chung của cả 2 tam giác đặc và rỗng là đều có độ cao bằng n - 1 và độ dài cạnh đáy bằng 2n - 1.

Dạng bài này chắc chắn phải sử dụng 2 vòng lặp lồng nhau.

Đối với tam giác đặc, vòng lặp đầu tiên sẽ quét theo hàng từ i=0 tới n - 1, còn vòng lặp thứ hai sẽ quét theo cột từ j=0 tới n - 1 + i. Khi cột j < n - 1 - i thì chúng ta in khoảng trắng, ngược lại in ký tự '*'.

Đối với tam giác cân, cấu trúc vòng lặp vẫn như cũ, chỉ khác là lần này chúng ta chỉ in ký tự '*' khi j = n - 1 - i (đường chéo trái) hoặc j = n - 1 + i (đường chéo phải) hoặc khi i = n - 1 (cạnh đáy).


#include <stdio.h>

int main()
{
    int n;
    printf("n=");
    scanf("%d", &n);
    
    for (int i = 0; i < n; i++, putchar('\n'))
        for (int j = 0; j <= n - 1 + i; j++)
            j < (n - 1 - i) ? printf("  ") : printf("* ");
    
    for (int i = 0; i < n; i++, putchar('\n'))
        for (int j = 0; j <= n - 1 + i; j++)
            j == (n - 1 - i) || (j == n - 1 + i) || (i == n - 1) ? printf("* ") : printf("  ");

    return 0;
}


Vẽ hai tam giác đối đỉnh

Vẽ hai tam giác cân có độ cao n nhập từ bàn phím đối đỉnh nhau như bên dưới:


n=7                                                                                                                              
* * * * * * * * * * * * *                                                                                                        
  * * * * * * * * * * *                                                                                                          
    * * * * * * * * *                                                                                                            
      * * * * * * *                                                                                                              
        * * * * *                                                                                                                
          * * *                                                                                                                  
            *                                                                                                                    
          * * *                                                                                                                  
        * * * * *                                                                                                                
      * * * * * * *                                                                                                              
    * * * * * * * * *                                                                                                            
  * * * * * * * * * * *                                                                                                          
* * * * * * * * * * * * * 

Lời giải:


#include <stdio.h>

int main()
{
    int n;
    printf("n=");
    scanf("%d", &n);
    
    for (int i = 0; i < 2 * n - 1; i++, putchar('\n'))
        for (int j = 0; j < 2 * n - 1; j++)
            (j >= i && j < 2 * n - 1 - i) || (j >= 2*n - 2 - i && j <= i) ? printf("* ") : printf("  ");

    return 0;
}

Vẽ hai tam giác số đối đỉnh theo chiều ngang

Tương tự như bài trên, hãy vẽ hai tam giác số đối đỉnh theo chiều ngang.


n=9                                                                                                                              
1               9                                                                                                                
1 2           8 9                                                                                                                
1 2 3       7 8 9                                                                                                                
1 2 3 4   6 7 8 9                                                                                                                
1 2 3 4 5 6 7 8 9                                                                                                                
1 2 3 4   6 7 8 9                                                                                                                
1 2 3       7 8 9                                                                                                                
1 2           8 9                                                                                                                
1               9 

Lời giải:


#include <stdio.h>

int main()
{
    int n;
    printf("n=");
    scanf("%d", &n);
    
    for (int i = 0; i < n; i++, putchar('\n'))
        for (int j = 0; j < n; j++)
            (j > i && j < n - 1 - i) || (j > n - 1 - i && j < i) ? printf("  ") : printf("%d ", j + 1);

    return 0;
}

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...