Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hàm không đệ quy, xin sửa giúp mình

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

    Wink Hàm không đệ quy, xin sửa giúp mình

    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    void nhap (int a[100],int n)
    {    for (
    int i=0;i<n;i++)
        {    
    printf"nhap vao phan tu a[%d]\n",i);
            
    scanf("%4d",&a[i]);
        }
    }
    void xuat (int a[100],int n)
    {    for (
    int i=0;i<n;i++)
        
    printf("%4d",a[i]);
    }
    int demphanbiet(int a[100],int n)
    {    
    int result=0;
        for (
    int i=0;i<n;i++)
        {
            
    int count =0;
            for (
    int j=0;j<n;j++)
            {    if (
    a[i]==a[j]&&i!=j)
                {    
    count++;
                }
            }
            if (
    count==0)
            {    
    result++;
            }
        }
        return 
    result;
    }
    void main()
    {   
    clrscr();
        
    int a[100];
        
    int n;
        
    printf("nhap vao n");
        
    scanf("%d",&n);
        
    nhap (a,n);
        
    xuat(a,n);
        
    demphanbiet(a,n);
        
    getch();

    Đề bài là:Cho hàm Dem_phan_biet được khai báo như sau:
    int Dem_phan_biet (int a[], int n); // a là mảng nguyên, n là số phần tử của mảng
    Hàm này trả về số phần tử phân biệt của mảng a (không trùng giá trị với các phần tử khác) bằng cách không đệ quy.

    Khi nhập vào 3 số VD: 1 2 3 thì kết quả trả ra là 1 2 3.
    VD: 0 1 5 thì kết quả trả ra là 0 1 5.
    Thấy sao kìa quá.Như vậy bài trên có đúng không?Xin sửa giúp giùm sai ở chỗ nào?

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    Với đề bài này theo mình thuật toán của hàm demphanbiet của bạn là chưa chính xác
    Thuật toán của bạn được giải thích như sau:
    Bạn lấy phần tử a[i] đem so sánh với toàn mảng
    Nếu phát hiện bất kỳ phần tử a[j] nào giống a[i] mà i khác j thì biến count sẽ tăng 1 giá trị
    Sau đó kiểm tra nếu biến count = 0 thì biến result sẽ tăng 1 giá trị ngược lại thì ko tăng<--- Sai ở đây vì khi các phần tử trong mảng giống nhau bạn ko đếm sự có mặt của chúng trong mảng

    Theo mình hàm demphanbiet có thể sửa như sau
    Code:
    int demphanbiet(int a[100],int n)
    {      int result=0;
    	int i,j,count;
        for (i=0; i<n; i++)
        {	count=1;
    	 for (j=0; j<i; j++)
    		if (a[i]==a[j])
    			count=0;//nếu muốn nhanh hơn bạn có thể dùng thêm lệnh break ở đây
    	result+=count;
        }
        return result;
    }
    Đã được chỉnh sửa lần cuối bởi halohcm : 22-01-2008 lúc 01:50 PM. Lý do: chỉnh lại code cho dễ đọc

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

    int Dem_phan_biet (int a[], int n); // a là mảng nguyên, n là số phần tử của mảng
    Hàm này trả về số phần tử phân biệt của mảng a (không trùng giá trị với các phần tử khác) bằng cách không đệ quy.
    Khi nhập vào 3 số VD: 1 2 3 thì kết quả trả ra là 1 2 3.
    VD: 0 1 5 thì kết quả trả ra là 0 1 5.
    bạn viết ví dụ tdt không hiểu niếu hàm trả về số phần tử phân biệt trong mảng thì phải là 1 2 3 kết quả là 3 chứ
    còn niếu VD: 1 2 3 1 thì kết quả là 2 3. thì đề phải hỏi là trả về các phần tử phân biệt trong mảng.
    trường hợp trên thì code của bạn thiếu phần đưa thông báo ra màn hình
    còn trường hợp dưới thì chỉ cần dùng mảng phụ để lưu trử các phần tử là được.
    hình như bài này có rồi thì phải

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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