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

Bài tập 252-253-254 : Hãy viết hàm ktra mảng có sóng 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

//
//252 Ta định nghĩa 1 mảng đc gọi là dạng sóng, 
//khi ptử có trị số I lớn hơn hoặc nhỏ hơn 2 ptử xung quanh.
//Hãy viết hàm ktra mảng có sóng hay ko ?
// KIỂM TRA HOÀN TOÀN - chỉ cần 1 phần tử sai là ==> sai
int KiemTra_DangSong(int A[], int N)
{
 int flag = 1; // Thỏa mản dạng sóng
 for (int i = 1; i < N - 1; i++)
 {
  if ((A[i - 1] > A[i] && A[i] > A[i + 1]) || (A[i - 1] < A[i] && A[i] < A[i + 1]))
  {
   flag = 0; // ko thỏa dạng sóng
   break;
  }
 }
 return flag;
}

//253 Hãy cho biết tất cả ptử trong mảng a có nằm trong mảng b ko ?
// VD : 
// A : 1 3 5 
// B : 4 5 1 3 2
int KT_MangA_In_MangB(int A[], int B[], int Na, int Nb)
{
 int flag = 0; // Chưa có thỏa
 int dem = 0;
 for (int i = 0; i < Na; i++)
 {
  for (int j = 0; j < Nb; j++)
  {
   if (A[i] == B[j])
    dem++;
  }
 }
 if (dem == Na)
  flag = 1; //Thỏa mản
 return flag;
}

//254 hãy đếm giá trị trong mảng thỏa : lớn hơn tất cả các giá trị đứng đằng trước nó
// VD : 1 4 6 1 3 5 10
int Dem_GiaTri_Max_Truoc_Do(int A[], int N)
{
 int dem = 0;
 for (int i = 1; i < N; i++)
 {
  int flag = 1;
  for (int j = 0; j < i; j++)
  {
   if (A[i] <= A[j]) // điều điện sai
   {
    flag = 0;
    break;
   }
  }
  if (flag == 1)
   dem++;
 }
 return dem;
}

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_252 = KiemTra_DangSong(A, Na);
 if (kq_252 == 1)
  cout << "Bai Tap 252 : la dang SONG";
 else
  cout << "Bai Tap 252 : KO la dang SONG";
 cout << "\n";

 int kq_254 = Dem_GiaTri_Max_Truoc_Do(A, Na);
 cout << "Bai Tap 254 : Dem lon hon truoc do la " << kq_254;
 cout << "\n";

 
 int Nb = 0;
 NhapN(Nb);

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

 int kq_253 = KT_MangA_In_MangB(A, B, Na, Nb);
 if (kq_253 == 1)
  cout << "Bai Tap 253 : Mang A trong Mang B";
 else
  cout << "Bai Tap 252 : KO phai";
 cout << "\n";
 
 return 0;
}

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

Đăng nhận xét