Cho một mảng các nguyên có n phần tử, yêu cầu kiểm tra dãy số tăng dần hay giảm dần? Như vậy, ta có 3 trường hơp:
- Dãy số tăng dần, phần tử phía sau không nhỏ hơn các phần tử phía trước
- Dãy số giảm dần, phần tử phía sau không lớn hơn các phần tử phía trước
- Dãy số không tăng không giảm
Ý tưởng kiểm tra tăng dần: Nếu dãy có n số, bạn phải đếm có bao nhiêu cặp 2 số liên tiếp a[i] & a[i+1], (0 <= i < n-2) thỏa mãn a[i] <= a[i+1]. Nếu bạn đếm được n – 1 cặp, tức là mảng tăng thì trả về 1. Ngược lại thì trả về 0.
Chương trình kiểm tra mảng tăng dần dần C/C++
#include <stdio.h>
int IsASC(int a[], int n)
{
int dem = 0;
for (int i = 0; i < n - 1; i++)
{
if (a[i + 1] >= a[i])
dem++;
}
if (dem == n - 1)
return 1;
else
return 0;
}
int main()
{
int a[] = {1, 3, 5, 7, 7};
int n=5;
if (IsASC(a,n))
printf("%s", "Mang tang dan");
else
printf("%s", "Mang khong tang dan");
}
Chương trình kiểm tra mảng giảm dần dần C/C++
#include <stdio.h>
int IsDESC(int a[], int n)
{
int dem = 0;
for (int i = 0; i < n - 1; i++)
{
if (a[i + 1] <= a[i])
dem++;
}
if (dem == n - 1)
return 1;
else
return 0;
}
int main()
{
int a[] = {8,5, 3, 2, 0};
int n=5;
if (IsDESC(a,n))
printf("%s", "Mang giam dan");
else
printf("%s", "Mang khong giam dan");
}
ở cuối trang, hay nút màu XANH
ở gần giữa trang, coi chừng nhầm nút