Viết chương trình in ra tam giác pascal c++



Đề bài: Viết chương trình C vẽ tam giác Pascal trong C.

Tam giác Pascal có qui tắc sau:

Tất cả các giá trị bên ngoài tam giác được xem như là 0.

Hàng đầu tiên sẽ là 0 1 0, trong đó chỉ có giá trị 1 có được một khoảng trống trong tam giác Pascal, còn 0 là không nhìn thấy.

Hàng thứ hai được tạo bằng cách cộng hai số liên tiếp nhau từ hàng thứ nhất: (0 + 1) và (1 + 0).

Các hàng còn lại cũng được tạo bằng cách cộng như trên. Ví dụ với hàng thứ ba là cộng các số liên tiếp nhau từ hàng thứ hai: (0 + 1), (1 + 1) và (1 + 0).

Viết chương trình in ra tam giác pascal c++



Lời giải: bài tập vẽ tam giác Pascal trong C

Chúng ta sử dụng ba vòng lặp lồng nhau. Một vòng lặp bên ngoài để điều khiển số hàng. Hai vòng lặp bên trong: một vòng lặp để in khoảng trống và một vòng lặp để in giá trị.

Dưới đây là chương trình C để giải bài tập vẽ tam giác Pascal trong C:

#include <stdio.h>

int factorial(int n) {
   int f;
   
   for(f = 1; n > 1; n--)
      f *= n;
      
   return f;
}

int ncr(int n,int r) {
   return factorial(n) / ( factorial(n-r) * factorial(r) );
}

int main() {
   int n, i, j;

   n = 6;

   printf("Ve tam giac Pascal:\n");
   for(i = 0; i <= n; i++) {
      for(j = 0; j <= n-i; j++)
         printf("  ");
         
      for(j = 0; j <= i; j++)
         printf(" %3d", ncr(i, j));

      printf("\n");
   }
   return 0;
}

Kết quả:

Viết chương trình in ra tam giác pascal c++



  • Viết chương trình in ra tam giác pascal c++
  • Diễn đàn
  • LẬP TRÌNH C++ | LẬP TRÌNH C | LẬP TRÌNH C++0X
  • Thắc mắc lập trình C/C++/C++0x
  • Bài tập C Viết chương trình in ra màn hình tam giác Pascal

  1. Viết chương trình in ra tam giác pascal c++
    Viết chương trình in ra màn hình tam giác Pascal

    Các bác ơi, mình mới bắt đầu học lập trình C. Nay có vấn đề kho khăn cần trợ giúp
    Giúp mình giải quyết bài toán này nha:

    Viết chương trình in ra màn hình tam giác Pascal như sau:
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    Bằng cách viết các hàm tính giai thừa và tính tổ hợp của một số nguyên dương
    Biết rằng:
    Mỗi số hạng của hàng thứ (n+1) là một tổ hợp chập k của n
    Tohop(n,k) =n!/(k! * (n-k)!)


  2. Tham khảo code này nhé:

    1. #include<stdio.h>

    2. #include<conio.h>

    3. typedef unsigned long thing;

    4. thing gt(int n)

    5. {

    6. int i, gt=1;

    7. for(i=2;i<=n;i++)

    8. gt*=i;

    9. return gt;

    10. }

    11. thing tohop(int n, int k)

    12. {

    13. return gt(n)/(gt(k) * gt(n-k));

    14. }

    15. void pcal(int n)

    16. {

    17. int i,j;

    18. for(i=0;i<n;i++)

    19. {

    20. for(j=0;j<=i;j++)

    21. {        

    22. printf("%5ld",tohop(i,j));

    23. }

    24. }  

    25. }

    26. int main()

    27. {

    28. int n;

    29. pcal(n);

    30. getch();

    31. return 0;

    32. }

    YH : lobuocphuudu_218
    Phone : 0126 463 5095

    Viết chương trình in ra tam giác pascal c++


  3. Viết chương trình in ra tam giác pascal c++
    Nguyên bản được gửi bởi lethanhminh
    Viết chương trình in ra tam giác pascal c++

    Các bác ơi, mình mới bắt đầu học lập trình C. Nay có vấn đề kho khăn cần trợ giúp
    Giúp mình giải quyết bài toán này nha:

    Viết chương trình in ra màn hình tam giác Pascal như sau:
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    Bằng cách viết các hàm tính giai thừa và tính tổ hợp của một số nguyên dương
    Biết rằng:
    Mỗi số hạng của hàng thứ (n+1) là một tổ hợp chập k của n
    Tohop(n,k) =n!/(k! * (n-k)!)

    Có thể làm như sau:

    1. #include <stdio.h>

    2. long combin(int n, int k)

    3. {

    4. if (k==0 || k==n) return 1;

    5. return combin(n-1,k-1)+combin(n-1,k);

    6. }

    7. void main()

    8. {

    9. int n = 10;

    10. for (int k=0; k < n; k++)

    11. {

    12. for (int j=0; j <= k; j++)

    13. printf("%4d",combin(k,j));

    14. }

    15. }


  4. Hoặc là thế này:

    PHP Code:

    #include<stdio.h>
    int main()
    {
        
    int ij10kq;
        for( 
    1<= ni++ )
        {
            
    printf("1");
            
    kq 1;
            for( 
    2<= ij++ )
            {
                
    kq=kq*(i-j+1)/(j-1);
                
    printf("%4d",kq);
            }
            
    printf("\n");
        }


  5. @trí : cách gì mà có công thức tính tổ hợp hay quá vậy, kq=kq*(i-j+1)/(j-1); là sao :P

    YH : lobuocphuudu_218
    Phone : 0126 463 5095

    Viết chương trình in ra tam giác pascal c++



  6. mình làm 2 cách ^^

    Code:

    #include <iostream.h>
    #include <stdio.h>
    int bin(int i,int j)
    {
              if (j==1 || i==j)
                       return 1;
              else
                       return bin(i-1,j-1) + bin(i-1,j);
    }
    void main()
    {
              int n;
              cout << "Nhap chieu cao : ";
              cin >> n;
              for (int i=1;i<=n;i++)
              {
                       for (int j=1;j<=i;j++)
                                 printf("%5d",bin(i,j));
                       cout << endl;
              }
    }

    dùng tổ hợp

    Code:

    #include<iostream.h>
    #include<conio.h>
    
    using namespace std;
    int n;
    
    int GiaiThua(int k)
    {
        int s=1;
        for( int i=1; i<=k ; i++)
        {
             s=s*i;
        }
        return s;
    }
    
    int ToHop(int a,int b)
    {
        int k;
        k=GiaiThua(b)/(GiaiThua(a)*GiaiThua(b-a));
        return k;
    }   
            
    int Pascal(int k)
    {
        if(k>n)
                return 1;
        else
        {
                for( int i=0;i<=k;i++)
                {
                         printf("%5d",ToHop(i,k));
                }
                cout << "\n\n\n";
                return Pascal(k+1);
        }
    }
    
    int main()
    {
        cout << " Nhap do cao tam giac Pascal : ";
        cin >> n;
        Pascal (0);
        getch();
        return 0;
    }

    dùng ct tính ^^

    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...


Các đề tài tương tự

  1. Trả lời: 3

    Bài viết cuối: 12-12-2012, 09:43 PM

  2. Trả lời: 19

    Bài viết cuối: 04-10-2011, 03:13 PM

  3. Trả lời: 11

    Bài viết cuối: 22-03-2011, 03:06 AM

  4. Trả lời: 0

    Bài viết cuối: 20-03-2011, 10:02 PM

  5. Trả lời: 4

    Bài viết cuối: 16-05-2007, 10:41 PM

Viết chương trình in ra tam giác pascal c++
Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn
  • Tìm hiểu luật lệ tham gia diễn đàn

  • BB code: On
  • Mặt cười: On
  • [IMG] code: On
  • [VIDEO] code is On
  • HTML code: Off