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

Đề tài: Tìm kiếm tuần tự.

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

    Mặc định Tìm kiếm tuần tự.

    Em đã tìm khắp diễn đàn nhưng chẳng thấy bài nào viết thuật toán tìm tuần tự mà ko dùng con trỏ hay là thuật toán này bắt buộc dùng con chỏ vậy. Em mới học về con trỏ nên ko thể hiểu hết về con trỏ được... mong có người trả lời sớm

  2. #2
    Ngày gia nhập
    12 2011
    Bài viết
    2

    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. void Nhap(int a[],int n)
    4. {
    5.     for(int i=0;i<n;i++)
    6.     {
    7.         cout<<"a["<<i+1<<"]= ";
    8.         cin>>a[i];
    9.     }
    10. }
    11. void Xuat(int a[],int n)
    12. {
    13.     for(int i=0;i<n;i++)
    14.         cout<<"a["<<i+1<<"]= "<<a[i]<<endl;
    15. }
    16. int timkiemtuantu(int a[], int n, int x)
    17. {
    18.     int i=0;
    19.     while(i<=n&&x!=a[i])
    20.     {
    21.         if(i<n&&a[i]==x) return i;
    22.         else return 0;
    23.         i++;
    24.     }
    25. }
    26. main()
    27. {
    28.     int a[100],n,x,m;
    29.     do
    30.     {
    31.         cout<<"\nNhap so phan tu= ";
    32.         cin>>n;
    33.         if (n<=0)
    34.             printf("Yeu cau nhap vao so >=0");
    35.     }
    36.     while(n<=0 || n>100);
    37.     Nhap(a,n);
    38.     cout<<endl<<"Mang vua nhap la: "<<endl;
    39.     Xuat(a,n);
    40.     cout<<"\nNhap vao so muon tim kiem: ";
    41.     cin>>x;
    42.     m=timkiemtuantu(a,n,x);
    43.     if(m==0) cout<<"Khong tim thay!";
    44.     else cout<<"Tim thay so "<<x<<" o vi tri "<<m+1<<endl;
    45.     getch();
    46. }
    em viết được thế này nhưng ra kết quả toàn xai mong các bác sửa lỗi giùm

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    299

    1. học lại chính tả
    2. sai như thế nào?
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  4. #4
    Ngày gia nhập
    12 2011
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi rossoneri Xem bài viết
    1. học lại chính tả
    2. sai như thế nào?
    tại em viết vội wa..... sai là tìm số nào cũng kêu là ko tìm thấy hết.
    --------------------------------------------------------------------
    à thôi em mới sửa được rồi mấy anh coi lại xem em có sai nhảm hay ai có cách gọn hơn thì share vs nhé
    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. void Nhap(int a[],int n)
    4. {
    5.     for(int i=0;i<n;i++)
    6.     {
    7.         cout<<"a["<<i+1<<"]= ";
    8.         cin>>a[i];
    9.     }
    10. }
    11. void Xuat(int a[],int n)
    12. {
    13.     for(int i=0;i<n;i++)
    14.         cout<<"a["<<i+1<<"]= "<<a[i]<<endl;
    15. }
    16. int timkiemtuantu(int a[], int n, int x)
    17. {
    18.     int i=0;
    19.     while(i<=n&&x!=a[i]) i++;
    20.     return i;
    21. }
    22. main()
    23. {
    24.     int a[100],n,x,m,i;
    25.     do
    26.     {
    27.         cout<<"\nNhap so phan tu= ";
    28.         cin>>n;
    29.         if (n<=0)
    30.             printf("Yeu cau nhap vao so >0");
    31.     }
    32.     while(n<=0 || n>100);
    33.     Nhap(a,n);
    34.     cout<<endl<<"Mang vua nhap la: "<<endl;
    35.     Xuat(a,n);
    36.     cout<<"\nNhap vao so muon tim kiem: ";
    37.     cin>>x;
    38.     i=timkiemtuantu(a,n,x);
    39.     if (i<=n) cout<<"So can tim nam tai vi tri thu "<<i+1<<endl;
    40.     else cout<<"So ban can tim khong thay.";
    41. }
    Đã được chỉnh sửa lần cuối bởi kingwarcraft : 11-03-2012 lúc 10:21 PM.

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    552

    1)Cái vòng lặp while để tìm kiếm ko dc đặt i<=n mà chỉ là i<n thôi.
    Chỉ chạy đến phần tử thứ n-1 là được. Vì mảng bắt đầu từ 0, chạy đến n-1 là đủ n phần tử
    Chứ cho chạy thấu n là nó vượt ra ngoài đấy, vượt ra ngoài thì khó kiểm soát

    Do đó ở câu lệnh kiểm tra Có tìm thấy hay ko? Thì đặt lại điều kiện if(i<n) thì xuất vị trí, else(tức là i==n) thì bảo là ko có
    Um Mani Padme Hum...!!

  6. #6
    Ngày gia nhập
    08 2010
    Nơi ở
    Home-Hà Đông
    Bài viết
    51

    Mặc định Tìm kiếm tuần tự.

    C Code:
    1. while(i<=n&&x!=a[i]) i++;
    2. if (i<=n) cout<<"So can tim nam tai vi tri thu "<<i+1<<endl;

    Sửa lại 2 dòng này bạn nhé, mảng bắt đầu từ chỉ số 0 nên chỉ số cuối là n-1 chứ không phải n .

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Lúc hỏi bài người ta thì chịu khó viết cho rõ ràng, tránh viết tắt. Viết xong đọc lại xem có dễ hiểu không. Mình không chịu khó thì bảo người ta tận tình sao được?

    Hàm timkiemtuantu làm theo như thuật toán trên là không tiện lợi lắm.

    1. Người ta trả về -1 nếu không tìm ra, như vậy khỏi phải lệ thuộc vào luật số trả về >= n

    2. Người ta đặt thêm một chỉ số k, hàm bắt đầu tìm kiếm từ vị trí k, để có thể tìm vị trí của phần tử match kế tiếp

    // hàm tìm trong mảng a, n phần tử, vị trí của phần tử match với trị x
    // hàm bắt đầu từ vị trí k. Nếu muốn tìm từ đầu thì đặt k=0
    int timkiemtuantu(int a[], int n, int k, int x)
    {
    for (int i=k; i < n; i++) if (a[i]==x) return i;
    return -1;
    }

    // code trong main
    if ((i=timkiemtuantu(a,n,0,x) >= 0) cout<<"So can tim nam tai vi tri thu "<<i+1<<endl;
    else cout<<"So ban can tim khong thay.";

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

  1. Thuật toán tìm kiếm tuần tự Lính Canh!!
    Gửi bởi quoccuong1991cltg 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: 23-10-2011, 09:05 PM
  2. Lỗi dùng tìm kiếm tuần tự để tìm kiếm sinh viên theo tên
    Gửi bởi mrbuides trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 19-05-2011, 07:34 PM
  3. Tìm kiếm nhị phân thắc mắc về Duyệt tuần tự ?
    Gửi bởi laphong10th 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: 11-11-2010, 10:47 PM
  4. Thuật toán tìm kiếm tuần tự, giúp mình
    Gửi bởi quoccuong1991cltg trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 23-10-2010, 03:28 PM
  5. thuật toán tìm kiếm nhị phân và tuần tự su dung dồ họa??
    Gửi bởi viyk trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 16-03-2010, 05:56 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