Một test đơn giản cho bạn , bạn test thử là hiểu code của bạn thôi:
BẠN run chương trình của mình thì bạn sẻ biết lỗi ở đâu.Code:input a[i] = 2 4 2 5 2 7 9 3 TH 1 x= 4; TH 2 x= 3;
1 cái nữa là do IDE của bạn thôi.
Dưới đây là đoạn code mình thử viết về tìm kiếm vị trí 1 phần tử trong dãy số, nhưng mà ko chạy đc, mình ngồi xem mãi mà chả hiểu vì sao chạy được nhưng kq ko đc chuẩn xác lắm do 2 dòng cuối. Mọi người vào xem, sửa lỗi và giải thích cho mình vì sao sai nhé, kiến thức còn nông cạn, mong mọi người vào giúp đỡ
Code:#include <iostream.h> #include <stdlib.h> int main() { int a[100]; int i,n,x; cout<<"\n So phan tu cua day la: "; cin >> n; for(i=0;i<n;i++) a[i]= rand(100); cout<<" Day da cho la: "; for(i=0;i<n;i++) cout<<" "<<a[i]; cout<<" Nhap so can tim: "; cin >> x; for(i=0;i<n;i++) { if(x==a[i]) cout<<"\n Vi tri so can tim trong day tren la "<< i; else cout<<"\n Khong co so can tim trong day"; } }
Một test đơn giản cho bạn , bạn test thử là hiểu code của bạn thôi:
BẠN run chương trình của mình thì bạn sẻ biết lỗi ở đâu.Code:input a[i] = 2 4 2 5 2 7 9 3 TH 1 x= 4; TH 2 x= 3;
1 cái nữa là do IDE của bạn thôi.
Đã được chỉnh sửa lần cuối bởi ghost.love : 03-09-2011 lúc 11:19 AM.
do cái vòng lặp của bạn
I'll come back
Nếu ý bạn là hỏi tìm tất cả các vị trí mà x xuất hiện trong dãy thì bạn có thể viết phần xử lý như sau:
Còn nếu ý bạn tìm vị trí đầu tiên mà x xuất hiện trong dãy:Code:int i,j; i = 0; while(i<n && a[i]!=x)i++; if(i==n)cout<<"x khong xuat hien trong day a vua cho."<<endl; else { cout<<"Cac vi tri ma x xuat hien trong day: "; for(j=i;j<n;j++) { if(a[j]==x)cout<<j<<" "; } }
Hy vọng bạn hiểu được ý mình.Code:int i,j; i = 0; while(i<n && a[i]!=x)i++; if(i==n)cout<<"x khong xuat hien trong day a vua cho."<<endl; else { cout<<"Vi tri xuat hien dau tien cua x la: "; cout<<i<<endl; }
hình như code đâu sai.
có khi nào cout<<"\n ..." nó sai ko nhỉ ?
~.~
I love you all my life !!
Nếu theo đoạn code của bạn trên thì giả sử như x không xuất hiện trong dãy thì "Không có mặt trong dãy" lặp đi lặp lại n lần.
C Code:
for(i=0;i<n;i++) //vòng lặp for chạy từ i(giá trị ban đầu i=0) tới n. { if(x==a[i]) cout<<"\n Vi tri so can tim trong day tren la "<< i; else cout<<"\n Khong co so can tim trong day"; } // xét các trường hợp i tăng dần(i++) trường hợp trùng thì xuất ra là có,ko trùng thì xuất ra là không-> như vậy sẽ có n lần xuất ra. }
nếu vẫn muốn xài vòng lặp for thì
C Code:
int m,k=0; // thêm 2 biến k,m for(int i=0;i<n;i++) if(x==a[i]) //nếu trùng với số trong mảng thì tăng k lên 1 đơn vị và gán giá trị m tại vị trí của i { k++; m=i; } if(k==1) cout<<"\n Vi tri so can tim trong day tren la "<<m; else cout<<"\n Khong co so can tim trong day";
Các pác chỉ thế thì tội cho em nó quá.
Thế này nhé:
Thay đoạn:
bằng:Code:else cout<<"\n Khong co so can tim trong day";
Sau dòng for thì thêm:Code:return;
Ok? Code chay chưa test!!!Code:cout<<"\n Khong co so can tim trong day"