-
08-01-2010, 11:40 AM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Vẽ tam giác pascal dùng hàm trên C++???
b) Viết định nghĩa hàm ve_tgPascal(int h), vẽ tam giac Pascal có chiều cao h.
Ví dụ h= 4:
1
1 1
1 2 1
1 3 3 1
mỗi số tương ứng với công thức của tổ hợpView more random threads:
- Mảng 2 chiều
- các bạn chỉ dạy mình thêm về vấn đề này
- Quản lý nhân sự, các anh chị giúp đỡ
- e ko biết bài này sai ở đâu
- Sửa giúp mình đoạn code kiểu danh sách này với.
- Đọc dữ liệu từ file
- Cách tính căn bậc n của số thực x!
- Mem mới chào cả nhà
- Giúp viết hàm sửa thông tin trên từng dòng trong file txt
- thư viện Direct.h
-
08-01-2010, 12:42 PM #2
Junior Member
- 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;}
-
08-01-2010, 01:40 PM #3
Junior Member
- 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));}
-
08-01-2010, 02:06 PM #4
Junior Member
- 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]
-
08-01-2010, 03:01 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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]);
}
}
}
-
08-01-2010, 03:53 PM #6
Junior Member
- 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( " " ); // } }
-
08-01-2010, 05:55 PM #7
Junior Member
- 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);
-
12-01-2010, 01:37 PM #8
Junior Member
- 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;
}
-
26-10-2011, 09:11 AM #9
Junior Member
- 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();
}
-
19-10-2013, 07:39 PM #10
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nammae
khi đề cập đến đội hình MU, không thể ko nói tới một trong các câu lạc bộ bóng đá huyền thoại và với tầm ảnh hưởng nhất trong lịch sử của môn thể thao vua. Với hơn 1 thế kỷ còn đó và phát triển,...
Đội hình MU - Manchester United:...