Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: LT tam giác Pascal dùng mãng 2 chiều

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    1

    Mặc định LT tam giác Pascal dùng mãng 2 chiều

    Mình sẽ vẽ 1 tam giác Pascal sử dụng mãng 2 chiều, chương trình mình đã làm như thế này , nhưng ko chạy đc, nhờ các bạn chỉ lỗi dùm:

    Code:
    #include<iostream.h>
    int giaithua();
    int tohop();
    void vetamgiac();
    int main()
    {
    	int tg[10][10];
    	for(int i=0;i<10;i++)
    		for(int j=0;j<10;j++)
    		{
    			tg[i][j]=tohop(i,j);
    		}
    	return 0;
    }
    void vetamgiac()
    {
    	for(int i=0;i<10;i++)
    		for(int j=0;j<=i;j++)
    		{
    			cout<<tg[i][j]<<"  ";
    		}
    }
    int giaithua(int n)
    {
    	int t=1;
    	for(int i=1;i<=n;i++)
    		t*=i;
    	return (t);
    }
    int tohop(int k,int n)
    {
    	int t2=1;
    	t2= giaithua(n)/(giaithua(k)*giaithua(n-k));
    	return t2;
    }
    Hy vọng các bạn giúp đỡ!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    03 2008
    Bài viết
    78

    - Nếu ý tưởng bạn đúng rồi:"Dùng mảng 2 chiều thì chứ theo ý tưởng đó mà làm"...làm mấy cái hàm giai thừa, tổ hợp làm jì cho khổ?

    Công thức truy hồi:
    C[1][j] = 1
    C[i][j] = C[i-1][j-1] + C[i-1][j]; (với 1<= i,j <= n);
    No way, No success..

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    126

    Code:
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    	int n,hang,cot;
    	int a[14][14]={0};
    	do
    	{
    	printf("Nhap chieu cao tam giac pascal (2<=n<=13): ");
    	scanf("%d",&n);
    	}
    	while(n<2 || n>13);
    	for(hang=1;hang<=n;hang++)
    	{
    		for(cot=1;cot<=n;cot++)
    		{
    			if(cot==1)
    				a[hang][cot]=1;
    			else
    				a[hang][cot]=0;
    		}
    	}
    		for(hang=2;hang<=n;hang++)
    			for(cot=1;cot<=n;cot++)
    				if(cot!=1)
    					a[hang][cot]=a[hang-1][cot]+a[hang-1][cot-1];
    				printf("\n");
    		for(hang=1;hang<=n;hang++)
    		{
    			for(cot=1;cot<=n;cot++)
    				if(a[hang][cot]!=0)
    					printf("%-6d",a[hang][cot]);
    			printf("\n");
    		}
    		getch();
    }
    Bài này mình đã làm 1 lần
    bây giờ minh code lại cho bạn xem thử
    ý tưởng là như sau
    đầu tiên bạn tạo ra 1 mảng 2 chiều với các phần tử của mảng đều bằng 0
    sau đó dùng kỹ thuật của bạn gán cho tất cả những hàng có cột bằng 1 là số 1 hết
    tức là sau khi gán ý đồ của bạn sẻ có như thế này
    Code:
    1 0 0 0 0 0 0 0 0 
    1 0 0 0 0 0 0 0 0
    1 0 0 0 0 0 0 0 0
    1 0 0 0 0 0 0 0 0
    1 0 0 0 0 0 0 0 0
    nhìn lên cái ý đồ của mình bản sẻ thấy có 1 quy luật như sau
    nếu như cột khác 1(tức là ko xét cột 1) thì
    a[hang][cot]=a[hang-1][cot]+a[hang-1][cot-1];
    cái này hàng ta xét từ 2 trở đi
    cứ như vậy ta sẻ gán các giá trị tương ứng cho mảng
    sau đó mình xuất ra các giá trị của mảng
    xuất ra các phần tử của mảng khác 0 là ok
    tuy nhiên cách làm này ko hay . nhưng đó là 1 cách làm sài mảng

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    126

    mình ko hiểu cái code của bạn
    tuy nhiên mình thấy bạn sai nhiều cái rất quan trọng
    có thể vì vậy mà code bạn ko chạy
    Code:
    #include<iostream.h>
    cái này phải là
    Code:
    #include <iostream>
    dưới nó phải khai báo
    Code:
    using namespace std;
    Code:
    void vetamgiac()
    {
    	for(int i=0;i<10;i++)
    		for(int j=0;j<=i;j++)
    		{
    			cout<<tg[i][j]<<"  ";
    		}
    }
    cái này của bạn thiếu tham số đầu vào
    phải là void vetamgiac(int tg[][10]) chứ bạn
    cả 3 cái trên cùng này cũng sai
    Code:
    int giaithua();
    int tohop();
    void vetamgiac();
    bạn phải khai báo nguyên mẩu hàm chứ
    nếu không khai báo nguyên mẩu hàm thì nó lấy dữ liệu từ đâu để sữ lý nhỉ
    còn nữa
    trong hàm main của bạn chỉ gán các giá trị cho mảng
    bạn có hàm vetamgiac tuy nhiên bạn lại không khai báo lại hàm này trong main
    nên dù hàm vẻ tam giác của bạn có đúng thì 1000 năm sau nó cũng ko in ra cái tam giác pascal cho bạn đâu
    của bạn còn mấy lổi nữa
    bạn tự kiểm tra lại nhé

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Code:
    #include<iostream.h>
    híc...cái này là thư viện của C++ không có .h thì sao mở được đây

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    126

    Mặc định LT tam giác Pascal dùng mãng 2 chiều

    đâu có
    mình sài vc++2006
    thấy bỏ iostream.h là lổi liền
    Code:
    #include <iostream>
    using namespace std;
    void main()
    {
    	cout<<"hic hic";
    }
    code này chạy ok
    Code:
    #include <iostream.h>
    using namespace std;
    void main()
    {
    	cout<<"hic hic";
    }
    cái này là báo lổi
    ko biết do mình hay do trình biên dịch nữa
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. Vẽ tam giác pascal dùng hàm trên C++???
    Gửi bởi betong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 24-11-2016, 01:21 AM
  2. In ra tam giác pascal voi chiều cao n nhập từ bàn phím dưới dang tam giác cân thi làm thế nào?
    Gửi bởi vietanh_90 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 08-05-2013, 09:02 PM
  3. Thuật toán C cài đặt hàng đợi dùng mảng một chiều (cài đặt hàng đợi tuyến tính bằng mảng )
    Gửi bởi ducnhat trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 4
    Bài viết cuối: 08-01-2013, 10:48 AM
  4. [Hỏi] Các cách sắp xếp mảng một chiều không dùng vòng lặp
    Gửi bởi plus trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 25-10-2012, 09:15 PM
  5. Lỗi hiện mảng hai chiều dùng cấp phát động bộ nhớ
    Gửi bởi lightning trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 02-03-2011, 11:39 PM

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