của mảng a cho đến khi gặp được phần tử cần tìm, hoặc đã tìm hết mảng mà.
Trang 2Giá trị
V trí ị
V trí đ ị ượ c tính t 0 ừ
Trang 33
* KHAI BÁO
*int a[100]; //Khai bao mang so nguyen a gom 100 phan tu
*float b[50]; //Khai bao mang so thuc b gom 50 phan tu
*char str[30]; //Khai bao mang ky tu str gom 30 ky tu
< Kiểu dữ liệu > < Tên mảng > [ < Số phần tử tối đa của mảng> ] ;
Nh m thu n ti n cho vi c vi t ch ằ ậ ệ ệ ế ươ ng trình, ta nên đ nh ị nghĩa h ng s MAX đ u ch ằ ố ở ầ ươ ng trình – là kích th ướ c t i đa ố
c a m ng - nh sau: ủ ả ư
#define MAX 100 void main()
{
int a[MAX], b[MAX];
//Các l nh ệ }
Trang 4Gán toàn b ph n t có cùng giá tr ộ ầ ử ị int a[8] = {3};
Trang 5int a[5] = {3, 6, 8, 11, 12};
cout<<“Giá tr m ng t i v trí 3 = “<<a[3]; ị ả ạ ị }
K t qu : Giá tr m ng t i v trí 3 = 11 ế ả ị ả ạ ị
V trí 3 ị
Trang 7cout<<“Nhap phan tu thu “<<i<<“: “; cin>>a[i];
} }
Trang 1010
Ví d 1: ụ Li t kê các ph n t có giá tr ch n trong m ng ệ ầ ử ị ẵ ả
void LietKeChan(int a[], int n) {
for (int i = 0; i<n; i++)
if ( a[i] %2 ==0 )
cout<<a[i]<<“\t”;
}
Ví d 2: ụ Li t kê các ph n t có giá tr l n h n x trong m ng ệ ầ ử ị ớ ơ ả
void LietKeLonHonX(int a[], int n, int x ) {
for (int i = 0; i<n; i++)
if ( a[i] > x )
cout<<a[i]<<“\t”;
}
Trang 11* Ví d 3: Ch ụ ươ ng trình nh p vào m ng m t chi u s nguyên a, ậ ả ộ ề ố kích th ướ c n In ra các ph n t có giá tr l n h n x có trong m ng ầ ử ị ớ ơ ả
9/4/15
11
#define MAX 100
void NhapMang(int a[], int n);
void XuatMang(int a[], int n);
void LietKeLonHonX(int a[], int n, int x);
void NhapMang(int a[], int n) {
for(int i=0; i<n; i++) {
cout<<"Nhap phan tu tai vi tri "<<i<<": ";
cin>>a[i];
} } void XuatMang(int a[], int n) {
for(int i=0; i<n; i++)
cout<<a[i]<<"\t";
}
Trang 15d++;
} }
return d;
}
bool LaSNT(int k) {
int d = 0;
for (int i = 1; i <= k; i++) {
if (k % i == 0) {
d++;
} }
return (d == 2);
}
Trang 16return d;
}
Trang 17* Ví d 3: Ch ụ ươ ng trình nh p vào m ng m t chi u s nguyên a, kích ậ ả ộ ề ố
th ướ c n Đ m s l ế ố ượ ng các ph n t là s nguyên t có trong m ng ầ ử ố ố ả
9/4/15
17
#define MAX 100
void NhapMang(int a[], int n);
void XuatMang(int a[], int n);
int DemSNT(int a[], int n);
for(int i=0; i<n; i++)
cout<<a[i]<<"\t";
}
Trang 18return d;
}
bool LaSNT(int k) {
int d = 0;
for (int i = 1; i <= k; i++)
if (k % i == 0) d++;
return (d == 2);
}
Trang 1919
void main() {
Trang 20Gi s c n tìm v trí ph n t nh nh t ả ử ầ ị ầ ử ỏ ấtrong dãy s sau ? ố
Trang 21Bước 1: Gi s v trí ph n t nh nh t là 1 ả ử ị ầ ử ỏ ấ(vtmin), ph n t này có giá tr 10 ầ ử ị
vtmin
Trang 221 2 3 4 5 6 7 8 22
15 1
Bước 2: So sánh giá tr t i vtmin v i t t c ị ạ ớ ấ ảgiá tr t i v trí còn l i (t 2 đ n 8), n u có ị ạ ị ạ ừ ế ế
Trang 231 2 3 4 5 6 7 8 23
15 1
Bước 2: So sánh giá tr t i vtmin v i t t c ị ạ ớ ấ ảgiá tr t i v trí còn l i (t 2 đ n 8), n u có ị ạ ị ạ ừ ế ế
ph n t nào nh h n ph n t t i vtmin thì ầ ử ỏ ơ ầ ử ạ
c p nh t l i vtmin ậ vtminậ ạ
7 l n h n 5 ớ ơ nên không
c p nh t v ậ ậ ị
trí min
10
Trang 241 2 3 4 5 6 7 8 24
15 1
Bước 2: So sánh giá tr t i vtmin v i t t c ị ạ ớ ấ ảgiá tr t i v trí còn l i (t 2 đ n 8), n u có ị ạ ị ạ ừ ế ế
ph n t nào nh h n ph n t t i vtmin thì ầ ử ỏ ơ ầ ử ạ
c p nh t l i vtmin ậ vtminậ ạ
3 nh h n 5 ỏ ơ nên c p ậ
nh t v trí ậ ị
min
10
Trang 251 2 3 4 5 6 7 8 25
15 1
Bước 2: So sánh giá tr t i vtmin v i t t c ị ạ ớ ấ ảgiá tr t i v trí còn l i (t 2 đ n 8), n u có ị ạ ị ạ ừ ế ế
ph n t nào nh h n ph n t t i vtmin thì ầ ử ỏ ơ ầ ử ạ
c p nh t l i vtmin ậ ậ ạ vtmin
9 l n h n 3 ớ ơ nên không
c p nh t v ậ ậ ị
trí min
10
Trang 261 2 3 4 5 6 7 8 26
9
2 15
Bước 2: So sánh giá tr t i vtmin v i t t c ị ạ ớ ấ ảgiá tr t i v trí còn l i (t 2 đ n 8), n u có ị ạ ị ạ ừ ế ế
ph n t nào nh h n ph n t t i vtmin thì ầ ử ỏ ơ ầ ử ạ
c p nh t l i vtmin ậ ậ ạ vtmin
1 nh h n 3 ỏ ơ nên c p ậ
nh t v trí ậ ị
min
10
Trang 28c p nh t v ậ ậ ị
trí min
2 1
Trang 29}
Trang 30int max = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > max)
max = a[i];
} return max;
}
Trang 31* TÌM PH N T X Ầ Ử
Ý tưởng
Lần lượt so sánh x với phần tử thứ nhất, thứ hai, của mảng a
cho đến khi gặp được phần tử cần tìm, hoặc đã tìm hết mảng mà
Trang 32} return -1;
}
* CODE MINH H A Ọ
Trang 34for (int i = 0; i<n; i++)
if (a[i] không th a đi u ki n) ỏ ề ệ return false;
return true;
}
Trang 3535
Ví d 1: ụ Ki m tra xem m ng có t n t i s l không?ể ả ồ ạ ố ẻ
bool KiemTraTonTaiLe(int a[], int n) {
for (int i = 0; i < n; i++) {
if (a[i] % 2 != 0) return true;
} return false;
}
Trang 3636
Ví d 2: ụ Ki m tra xem m ng có toàn giá tr âm không? ể ả ị
(true: có/ false: không)
bool KiemTraToanAm(int a[], int n) {
for (int i = 0; i<n; i++) {
if (a[i] >= 0)
return false;
} return true;
}
Trang 37}
Trang 38s += giatri;
d ++;
} }
if (d==0)
return 0;
return (float) s / d;
}
Trang 39}
Trang 4040
Ví d 2: ụ Tính giá tr trung bình các ph n t có giá tr âm trong m ng ị ầ ử ị ả
float TrungBinhAm(int a[], int n) {
s += a[i];
d++;
} }
if (d == 0) return 0;
return (float)s / d;
}
Trang 41for(int j = i+1; j < n; j ++)
if (a[i] > a[j])
HoanVi(a[i], a[j]); }
} void HoanVi(int &a, int &b) {
int tam = a;
a = b;
b = tam;
}
Trang 429 111
42
Trang 43* Chèn ph n t vào m ng ầ ử ả
void ChenX(int a[], int &n, int x, int k);
43
Trang 46* Xóa ph n t kh i m ng ầ ử ỏ ả
*Hãy vi t hàm xóa ph n t t i v trí k cho ế ầ ử ạ ị
trước trong m ng a kích thả ước n theo m u ẫsau:
void XoaTaiVTk(int a[], int &n, int k);
46
Trang 47* Bài t p áp d ng ậ ụ
Hãy vi t hàm xóa ph n t x ế ầ ử (n u có) ế trong
giá tr trùng nhau)ị
47