Thứ Ba, 6 tháng 12, 2016

Bài tập 225-226-227-228-229: Đếm số lượng giá trị lớn nhất có trong mảng

#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";
 }
}

// DẠNG ĐẾM
// 1. Khai báo biến đếm
// 2. Duyệt
//  2.1 Nếu
//   tăng đếm
// 3. Trả về kết quả đếm

//225 Đếm số lượng giá trị lớn nhất có trong mảng
//VD : 1 3 5 99 7 99 5 3 99 1
int Tim_Max(int A[], int N)
{
 int max = A[0];
 for (int i = 0; i < N; i++)
 {
  if (A[i] > max)
   max = A[i];
 }
 return max;
}

int Dem_Max(int A[], int N)
{
 int dem = 0;
 int max = Tim_Max(A, N);
 for (int i = 0; i < N; i++)
 {
  if (A[i] == max)
   dem++;
 }
 return dem;
}
// 
//226 Hãy xác định số lượng ptử kề nhau mà cả 2 đều chẵn
// VD:1 2 4 5 6 1 4 6 8 10
// => 4
int Dem_Ke_Chan(int A[], int N)
{
 int dem = 0;
 for (int  i = 0; i < N - 1; i++)
 {
  if (A[i] % 2 == 0 && A[i + 1] % 2 == 0)
   dem++;
 }
 return dem;
}
//227 Hãy xác định số lượng ptử kề nhau mà cả 2 trái dấu
int Dem_Ke_Trai_Dau(int A[], int N)
{
 int dem = 0;
 for (int i = 0; i < N - 1; i++)
 {
  if (A[i] * A[i + 1] < 0)
   dem++;
 }
 return dem;
}
//228 Hãy xác định số lượng ptử kề nhau mà số đứng sau cùng dấu số đứng trc và có gtrá trị tuyệt đối lớn hơn
// VD : -1 7 -2
int Dem_Ke_Cung_Dau(int A[], int N)
{
 int dem = 0;
 for (int i = 0; i < N - 1; i++)
 {
  if (A[i] * A[i + 1] > 0 && abs(A[i]) > A[i + 1])
   dem++;
 }
 return dem;
}

//229 Đếm số lượng các giá trị phân biệt có trong mảng
void HoanVi(int &a, int &b)
{
 int t = a; a = b; b = t;
}

void SapXep(int A[], int N)
{
 for (int i = 0; i < N - 1; i++)
 {
  for (int j = i + 1; j < N; j++)
  {
   if (A[i] > A[j])
    HoanVi(A[i], A[j]);
  }
 }
}

int Dem_Phan_Biet(int A[], int N)
{
 SapXep(A, N);
 int dem = 1;
 for (int i = 1; i < N; i++)
 {
  if (A[i] != A[i - 1])
   dem++;
 }
 return dem;
}

int main()
{

 int N = 0;
 NhapN(N);

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

 int kq_225 = Dem_Max(A, N);
 cout << "Bai tap 225 : so luong gia tri max = " << kq_225;
 cout << "\n";

 int kq_226 = Dem_Ke_Chan(A, N);
 cout << "Bai tap 226 : so luong gia tri chan ke nhau = " << kq_226;
 cout << "\n";

 int kq_227 = Dem_Ke_Trai_Dau(A, N);
 cout << "Bai tap 227 : so luong gia tri ke nhau trai dau = " << kq_227;
 cout << "\n";

 int kq_228 = Dem_Ke_Cung_Dau(A, N);
 cout << "Bai tap 228 : so luong gia tri ke nhau cung dau va lon hon = " << kq_228;
 cout << "\n";

 int kq_229 = Dem_Phan_Biet(A, N);
 cout << "Bai tap 229 : so luong gia tri phan biet ke ca giong nhau = " << kq_229;
 cout << "\n";

 return 0;
}

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

Đăng nhận xét