Bro nào vào chỉ giúp cái nào
Bài này mình làm đc, nhưng chỉ in ra được vị trí x xuất hiện đầu tiên, ai biết sửa dùm cho nó in ra hết các vị trí xuất hiện x cái, thanks
Code:#include<stdio.h> #include<conio.h> void main() { int timx(int [], int, int ); int n, i, x; int a[10]; clrscr(); printf("Moi nhap so phan tu cua mang: "); scanf("%d",&n); for(i=0;i<n;i++) { printf("a[%d]= ",i); scanf("%d",&a[i]); } printf("Nhap x: "); scanf("%d",&x); if(timx(a,n,x)==0) printf("Ko xuat hien x trong mang"); else printf("vi tri x xuat hien trong mang %d ", vitrix(a,n,x)); getch(); } int timx(int a[], int n, int x) { int i; for(i=0;i<n;i++) if(a[i]==x) return a[i]; return 0; } int vitrix(int a[], int n, int x) { int i; for(i=0;i<n;i++) if(a[i]==timx(a,n,x)) return i; }
Bro nào vào chỉ giúp cái nào
Code của bạn đau mắt quá.
Vì hàm vitrix của bạn chỉ là tìm vị trí xuất hiện của x thôi chứ không phải là hàm in ra tất cả các vị trí. Sửa hàm int vitrix thành void nhé.
Có thể sửa lại như sau:
Mình compilers bằng C Free nên có sửa lại một số cú pháp.C Code:
#include<stdio.h> #include<conio.h> int main() { int timx(int [], int, int ); int n, i, x; int a[10]; for(i=0;i<n;i++) { } /////////////////////////////////// if(timx(a,n,x)==0) else vitrix(a,n,x); getch(); } /////////////////////////////////////////////////////// int timx(int a[], int n, int x) { int i; for(i=0;i<n;i++) if(a[i]==x) return a[i]; return 0; } ////////////////////////// void vitrix(int a[], int n, int x) { int i; for(i=0;i<n;i++) if(a[i]==timx(a,n,x)) }
Chẳng biết mình muốn cái gì nữa :v
C++ Code:
#include <stdio.h> #include <conio.h> void main() { int n, i, x; int a[100]; clrscr(); printf("Moi nhap so phan tu cua mang: "); scanf("%d",&n); for(i=0;i<n;i++) { printf("a[%d]= ",i); scanf("%d",&a[i]); } printf("Nhap x: "); scanf("%d",&x); int k = 0; while (k < n && a[k] != x) k++; if (k < n) { printf("\n Cac vi tri ma %d xuat hien trong mang la:\n",x); for (i = k; i < n; i++) if (a[i] == x) printf("%5d",i); } else printf("Ko xuat hien %d trong mang\n",x); getch(); }
Nếu viết hàm tính vị trí thì phải dùng phương pháp tính từ một vị trí nào đó thay vì từ đầu mảng. Như vậy hàm mới có thể được gọi nhiều lần trên một mảng để tìm các vị trí khác nhau.
C Code:
// hàm duyệt mảng a[], n phần tử // trả về vị trí xuất hiện của trị x tr, kể từ vị trí kt // nếu không có, trả về -1 int vitrix(int a[], int n, int x, int kt) { for (int i=kt; i < n; i++) if (a[i] == x) return i; return -1; } // code trong hàm main int vt = 0; while ( 1 ) { vt = vitrix(a, n, x, vt); if ( vt < 0 ) break; vt++; } // sửa đổi code một chút nếu muón giải quyết trường hợp không có trị x trong mảng