Đề 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).
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ả:
- 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
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)!)
Tham khảo code này nhé:
#include<stdio.h> #include<conio.h> typedef unsigned long thing; thing gt(int n) { int i, gt=1; for(i=2;i<=n;i++)
gt*=i; return gt; } thing tohop(int n, int k) { return gt(n)/(gt(k) * gt(n-k)); }
void pcal(int n) { int i,j; for(i=0;i<n;i++) { for(j=0;j<=i;j++)
{ printf("%5ld",tohop(i,j)); } } } int main() {
int n; pcal(n); getch(); return 0; }
YH : lobuocphuudu_218 Phone : 0126 463 5095
Nguyên bản được gửi bởi lethanhminh
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:
#include <stdio.h> long combin(int n, int k) { if
(k==0 || k==n) return 1; return combin(n-1,k-1)+combin(n-1,k); } void main()
{ int n = 10; for (int k=0; k < n; k++) { for (int j=0; j <= k; j++) printf("%4d",combin(k,j)); } }
Hoặc là thế này:
PHP Code:
#include<stdio.h>
int main()
{
int i, j, n = 10, kq;
for( i = 1; i <= n; i++ )
{
printf("1");
kq = 1;
for( j = 2; j <= i; j++ )
{
kq=kq*(i-j+1)/(j-1);
printf("%4d",kq);
}
printf("\n");
}
}
@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
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ựTrả lời: 3 Bài viết cuối: 12-12-2012, 09:43 PM Trả lời: 19 Bài viết cuối:
04-10-2011, 03:13 PM Trả lời: 11 Bài viết cuối: 22-03-2011, 03:06 AM Trả lời: 0 Bài viết cuối: 20-03-2011, 10:02 PM Trả lời: 4 Bài viết cuối: 16-05-2007, 10:41 PM
Quyền hạn của bạn - BB code: On
- Mặt cười: On
- [IMG] code: On
- [VIDEO] code is
On
- HTML code: Off
|