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

Đề tài: góp ý dùm bài tìm kiếm trong mảng

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

    Mặc định góp ý dùm bài tìm kiếm trong mảng

    Tớ có bài tìm kiếm trong mảng như sau:
    Code:
    #include<stdio.h>
    void xuatmang(int a[],int n);
    void nhapmang(int a[],int n);
    int LineSearch(int a[],int n,int x);
    void nhapmang(int a[],int n)
    {
    	for(int i=0;i<n;i++)
    	{	printf("nhap phan tua a[%d]=",i);
    		scanf("%d",&a[i]);
    	}
    }
    
    void xuatmang(int a[],int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		printf("%3d",a[i]);
    	}
    }
    
    int LineSearch(int a[],int n,int x)
    {
    	for(int i=0;i<n;i++)
    	{
    			if(a[i]==x)
    				return i;
    	}
    	return -1;
    }
    
    void main()
    {
    	int n,x;
    
    	int tim;
    	int a[20];
    	printf("nhap so phan tu cua mang:");
    	scanf("%d",&n);
    	nhapmang(a,n);
    	printf("mang vua nhap la\n:");
    	xuatmang(a,n);
    	printf("nhap gia tri can tim :");
    	scanf("%d",&x);
    	tim=LineSearch(a,n,x);
    	if(tim==-1)
    		printf("khong tim thay %d trong mang:",x);
    	else
    		printf("vi tri cua %d trong mang la %d:",x,tim);
    
    }
    Bài này nếu mà không co điều kiện gì thì chạy tốt rồi. Giờ tớ muốn khi mình nhâp mảng mà có các vị trí trùng giá trị thì đặt điều kiện thế nào để nó xuất ra tất cả các vị trí của giá trị x mà ta nhập vào.
    nếu không đặt điều kiện thì nó chỉ xuất ra vị trí thằng đầu nó gặp thôi à, còn mấy thằng sau nó chả biết. Mong mọi người giưp đỡ

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

    Thì bạn đừng return ngay khi tìm được giá trị mà hãy đặt nó vào một cái mảng nào đó. Sau đó xuất cái mảng này là oke

    @ ledung_32: Lưu ý tiêu đề bài viết của mình nhé!
    Keep moving forward!

    ... Retired ...

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

    cũng có thế là trong hàm tìm bạn in nó ra luôn, nhưng cách này thì không hay(nhưng cũng làm được)

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Cũng có thế là trong hàm tìm bạn in nó ra luôn, nhưng cách này thì không hay(nhưng cũng làm được)
    Đúng là không hay thật, nhưng làm được thì tui nghĩ là không vì xem như cái hàm đó bị fix luôn, không xài lại được. Dễ thấy nhất là không chạy trên môi trường khác được (winform, web, ...).
    Keep moving forward!

    ... Retired ...

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

    Hàm này trả lại số phần tử tìm được:

    Code:
    int vitri[MAX];
    
    int LineSearch(int a[], int &vitri[])
    {
            int j =0;
    	
            for(int i=0;i<n;i++)
    	{
    			if(a[i]==x)
    			{
                              vitri[j]=i;
                              j++;       
    	}
    
           if(j==0)
           {
    	 return -1;
           }
          
          return j+1;
    }

  6. #6
    Ngày gia nhập
    07 2007
    Bài viết
    7

    Thumbs down góp ý dùm bài tìm kiếm trong mảng

    Code:
    int LineSearch(int a[],int n,int x,int b[],int &k)
    {
    	int kt=0;
               for(int i=0;i<n;i++)
    	{
    			if(a[i]==x)
    			{	
                                              b[k]=i;
                                              k++;
                                      }
    	                       kt=1;
               }
               return kt;
    }
    
    void main()
    {
    	int n,x,k=0,kt;
    	int a[20],b[20];
    	printf("nhap so phan tu cua mang:");
    	scanf("%d",&n);
    	nhapmang(a,n);
    	printf("mang vua nhap la\n:");
    	xuatmang(a,n);
    	printf("nhap gia tri can tim :");
    	scanf("%d",&x);
    	kt=LineSearch(a,n,x,b,k);
    	if(kt==0)
    		printf("khong tim thay %d trong mang:",x);
    	else
    		{
                                 printf("vi tri cua %d trong mang la:",x);
                                 for(int i=0;i<k;i++)
                                        printf("%3d",b[i]);
                          }
    }
    Bạn xem coi sao. Hy vọng bạn ko chê.
    Đã được chỉnh sửa lần cuối bởi thang@ : 28-11-2007 lúc 01:40 PM.
    (=D)> (:=(|) Luôn mong muốn mình sẽ pro hơn hahahha(:#) (:#)

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

  1. Góp ý thuật toán tìm kiếm trong bảng Băm sử dụng phương pháp thăm dò tuyến tính
    Gửi bởi dacklayer trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 0
    Bài viết cuối: 09-03-2013, 05:29 PM
  2. Algorithm chương trình tìm đường đi sử dụng giải thuật BFS bằng C#. góp ý dùm mình?
    Gửi bởi Promance trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 24-06-2012, 05:42 PM
  3. hỏi về multithread..Rất mong có sự đóng góp ý kiến (P2)
    Gửi bởi cakiempc trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 31-10-2007, 11:55 AM
  4. Mời Các bạn vào đóng góp ý kiến nha
    Gửi bởi devilsleep trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-10-2007, 05:36 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