Thứ Sáu, 23 tháng 12, 2016

Bài tập 248-249-250-251:Ktra mảng có tăng dần hay ko?

#include <iostream>
using namespace std;

#define MAX 100

// MẢNG 1 CHIỀU 
// 1. HÀM NHẬP SỐ PHẦN TỬ
void NhapN(int &N)
{
 do
 {
  cout << "Moi ban nhap so phan tu cua mang N = ";
  cin >> N;

  // 0 < N <= MAX
  // Điều kiện phải ngược lại 
  if (N <= 0 || N > MAX)
   cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n";

 } while (N <= 0 || N > MAX);
}

// 2. HÀM NHẬP MẢNG
void NhapMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << "A[" << i << "]= ";
  cin >> A[i];
 }
}

// 3. HÀM XUẤT MẢNG
void XuatMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << A[i] << "\t";
 }
}

//Kĩ thuật đặt cờ hiệu
// KIỂM TRA HOÀN TOÀN - chỉ cần 1 phần tử sai là ==> sai


// KIỂM TRA TỒN TẠI - Chỉ cần 1 phần tử đúng là ==> đúng
// flag = 0 ==> flag = 1 ==> flag

//248 Ktra mảng có tăng dần hay ko ?
// flag = 1 ==> flag = 0 ==> flag
int KiemTra_Tang(int A[], int N)
{
 int flag = 1; // Hoàn toàn tăng
 for (int i = 0; i < N - 1; i++)
 {
  if (A[i] > A[i + 1]) // điều kiện sai
  {
   flag = 0; // ko phải tăng
   break;
  }
 }
 return flag;
}
//249 Ktra mảng có giảm dần hay ko ?
// flag = 1 ==> flag = 0 ==> flag
int KiemTra_Giam(int A[], int N)
{
 int flag = 1;// Hoàn toàn giảm
 for (int i = 0; i < N - 1; i++)
 {
  if (A[i] < A[i + 1]) // điều kiện sai
  {
   flag = 0; // không phải giảm
   break;
  }
 }
 return flag;
}

//250 Hãy cho biết các ptử trong mảng có lập thành cấp số cộng ko ? Nếu có chỉ ra công sai d.
// VD1 : 1 3 5 7 9
// VD2 : 2 4 6 8 10
// VD3 : 5 10 15 20
int KiemTra_CapSoCong(int A[], int N, int &d)
{
 d = A[1] - A[0];
 int flag = 1; // Luôn có cấp số cộng
 for (int i = 2; i < N - 1; i++)
 {
  if ((A[i] - A[i - 1]) != d) // điều kiện sai
  {
   flag = 0; // không tồn tại cấp số cộng
   break;
  }
 }
 return flag;
}

//251 Hãy cho biết các ptử trong mảng có bằng nhau ko ?
int KiemTra_MangBangNhau(int A[], int N)
{
 int flag = 1; // hoàn toàn bằng nhau
 for (int i = 0; i < N - 1; i++)
 {
  if (A[i] != A[i + 1]) // điều kiện sai
  {
   flag = 0;  // không bằng nhau
   break;
  }
 }
 return flag;
}


int main()
{
 int Na = 0;
 NhapN(Na);

 int A[MAX];
 NhapMang(A, Na);
 cout << "MANG A BAN DAU\n";
 XuatMang(A, Na);
 cout << "\n";

 int kq_248 = KiemTra_Tang(A, Na);
 if (kq_248 == 1)
  cout << "BAI TAP 248 : Tang dan";
 else
  cout << "BAI TAP 248 : Khong tang dan";

 cout << "\n";

 int kq_249 = KiemTra_Giam(A, Na);
 if (kq_249 == 1)
  cout << "BAI TAP 249 : Giam dan";
 else
  cout << "BAI TAP 249 : Khong giam dan";

 cout << "\n";

 int d = 0;
 int kq_250 = KiemTra_CapSoCong(A, Na, d);
 if (kq_250 == 1)
  cout << "BAI TAP 250 : la cap so cong voi cong sai d = "<<d;
 else
  cout << "BAI TAP 250 : Khong phai la cap so cong";

 cout << "\n";

 int kq_251 = KiemTra_MangBangNhau(A, Na);
 if (kq_251 == 1)
  cout << "BAI TAP 251 : Bang nhau";
 else
  cout << "BAI TAP 251 : Khong bang nhau";
 
 cout << "\n";
 return 0;
}

Không có nhận xét nào:

Đăng nhận xét