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é!
Tớ có bài tìm kiếm trong mảng như sau:
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.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); }
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 đỡ
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 ...
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ôngCũ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)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 ...
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; }
Bạn xem coi sao.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]); } }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(:#) (:#)