Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 12
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Vẽ tam giác pascal dùng hàm trên C++???


  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    #include <stdio.h> int TinhGiaiThua( int n ){    if( 0 == n )            return 1;    return n*TinhGiaiThua( n-1 );} int TinhToHop( int k, int n ){    return TinhGiaiThua( n )/(TinhGiaiThua( k )*TinhGiaiThua( n - k ));} void VeTgPascal( int h ){    int i, j;        for( i = 0; i < h; i++ )    {        for( j = 0; j <= i; j++ )            printf( "%4d", TinhToHop( j, i ) );        printf( "
    " );    }} int main(){    int h;     do    {        printf( "Nhap do cao tam giac Pascal: " );        scanf( "%d", &h );    }    while( h <= 0 );        printf( "Tam giac Pascal co do cao %d:
    ", h );    VeTgPascal( h );        return 0;}

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bài này phần tính tổ hợp còn có một cách nữa là dựa vào tính chất C(k,n)+C(k+1,n)=C(k+1,n+1) để tính. Với C(0,n)=C(n,n)=1.
    Mã nguồn PHP:
    int TinhToHop(int m,int n){ if ((m==n)||(m==0))return 1; else return(TinhToHop(m,n-1)+TinhToHop(m-1,n-1));}  

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Truy hồi theo cách 2 vòng for để tính tổ hợp nhanh hơn nhiều [IMG]images/smilies/biggrin.png[/IMG]

  5. #5
    Mình có code đây bạn thử xem:

    #include <conio.h>>
    #include<stdio.h>
    const int MAX_SIZE = 10;
    void calPascal(int a[][MAX_SIZE], int n);
    void printPascal(int a[][MAX_SIZE], int n);

    int main()
    {
    int a[MAX_SIZE][MAX_SIZE];

    int n;
    printf( "n = ");
    scanf("%i",&n);

    calPascal(a, n);
    printPascal(a, n);

    printf("
    ");
    getch();
    return 0;
    }

    void calPascal(int a[][MAX_SIZE], int n)
    {
    for (int i = 0; i <= n; i++) {
    a[i][0] = 1;
    }

    for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {
    a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
    }
    }
    }
    void printPascal(int a[][MAX_SIZE], int n)
    {

    for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= i; j++) {
    printf("%5i" ,a[i][j]);
    }


    }
    }

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình thấy thuật toán của bạn rất hay, bạn chỉ cần chú ý chỉ số mảng bắt đầu từ 0 và kết thúc tại n-1.

    Mã:
    void calPascal(int a[][MAX_SIZE], int n){    for (int i = 0; i < n; i++)  ////    {        a[i][0] = 1;    }            for (int i = 1; i < n; i++)     {        a[i][i] = 1;      ////        a[i][i+1] = 0;    ////        for (int j = 1; j < i; j++) ////        {               a[i][j] = a[i - 1][j - 1] + a[i - 1][j];        }    }}void printPascal(int a[][MAX_SIZE], int n){    for (int i = 0; i < n; i++)  ////    {        for (int j = 0; j <= i; j++)         {            printf("%5i" ,a[i][j]);        }        printf( "
    " );  //      } }

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Để ý là 1 dòng thứ i đc tính theo dòng thứ i-1, => chỉ cần dùng mảng a[2][n] là đủ.

    Mã:
    void pascal(int n){    int* p[2], p1, p2;    p[0] = new int[n];    p[1] = new int[n];     for (int i = 0; i<n; i++){        int k = i%2;        p[k][0] = p[k][i] = 1;        if (i>0){            cout<<1 <<' ';            for (int j = 1; j<i; j++){                p[k][j] = p[1-k][j-1] + p[1-k][j];                cout <<p[k][j] <<' ';            }        }        cout<<1 <<endl;    }     delete[] p[0];    delete[] p[1];}
    Mã:
    pascal(4);

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mấy pác xem rồi góp ý giúp với, em mới bắt đầu học c++

    #include<iostream.h>
    #include<stdio.h>
    #include<conio.h>
    #include<iomanip.h>
    unsigned int a[10][10];
    int i,j,n;
    main()
    {
    cout<<"Nhap so hang cua tam giac: ";cin>>n;
    for (j=0;j<=n-1;j++)
    {
    a[j][0]=1;
    }
    for (i=0;i<=n-1;i++)
    {
    for(j=1;j<=i;j++)
    {
    a[i][j]=a[i-1][j]+a[i-1][j-1];
    }
    }
    for (i=0;i<=n-1;i++)
    {
    for(j=0;j<=i;j++) {cout<<a[i][j]<<setw(6);}
    cout<<"
    ";
    }
    getch();
    return 0;
    }

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    //Vì mình không biết cách nào ngoài vòng lặp for nên sẽ hơi khó hiểu. Ai có cách nào hay thì chia sẻ cho mình nũa nhé. Cái này là mình viết trong C#...

    private static void Main(string[] args)
    {

    int n, gt, gt1, gt2, dem, cal,l;
    Console.Write("Enter Number: ");
    n = Convert.ToInt32(Console.ReadLine());
    for (int i = 0; i <= n; i++)
    {
    //(gt/(gt1*gt2)
    gt = 1;
    gt1 = 1;
    gt2 = 1;
    for (int j = 0; j <= i; j++)
    {
    #region tim gt

    l = j;
    if (j == 0)
    {
    l = 1;
    }
    gt = gt * l;


    #endregion

    }
    //Console.Write("{0}", gt1);
    #region tim gt1 va gt2 trong cung 1 for
    for (int j = 0; j <= i; j++)
    {
    #region tim gt1

    dem = (i - j);
    if (dem==0)
    {
    dem = 1;
    }
    for (int k = 1; k <= dem; k++)
    {
    gt1 = gt1*k;
    }



    //Console.Write("gt1:{0} ", gt1);
    #endregion

    #region tim gt2

    l = j;
    if (j==0)
    {
    l=1;
    }

    gt2 = gt2*l;

    #endregion
    cal = gt / (gt1 * gt2);
    Console.Write(" {0}", cal);
    gt1 = 1;

    }
    #endregion

    Console.WriteLine();

    }
    Console.ReadLine();
    }

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nammae
    Mình thấy thuật toán của bạn rất hay, bạn chỉ cần chú ý chỉ số mảng bắt đầu từ 0 và kết thúc tại n-1.

    Mã:
    void calPascal(int a[][MAX_SIZE], int n){    for (int i = 0; i < n; i++)  ////    {        a[i][0] = 1;    }            for (int i = 1; i < n; i++)     {        a[i][i] = 1;      ////        a[i][i+1] = 0;    ////        for (int j = 1; j < i; j++) ////        {               a[i][j] = a[i - 1][j - 1] + a[i - 1][j];        }    }}void printPascal(int a[][MAX_SIZE], int n){    for (int i = 0; i < n; i++)  ////    {        for (int j = 0; j <= i; j++)         {            printf("%5i" ,a[i][j]);        }        printf( "
    " );  //      } }
    cái [] nghĩa là j vậy bạn, mình cũng mới học C, nhưng k thấy có dấu đó

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •