Thứ Năm, 22 tháng 12, 2016

Bài tập 230-231-232-233 : Liệt kê tần suất xuất hiện các giá trị 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

//230 Liệt kê tần suất xuất hiện các giá trị xuất hiện trong mảng(mỗi giá trị liệt kê 1 lần)
//VD : 1 1 4 4 4 7 6 19 99 1
// Số 1 xuất hiện : 3 lan
// Số 4 xuất hiện : 3 lan
// Số 7 xuất hiện : 1 lan
// Số 6 xuất hiện : 1 lan
// Số 19 xuất hiện : 1 lan
// Số 99 xuất hiện : 1 lan
void Liet_Ke_Tan_So(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  int dem = 0;
  for (int j = 0; j < N; j++)
  {
   if (A[i] == A[j])
   {
    if (j < i)
     break;
    else
     dem++;
   }
  }

  if (dem != 0)
   cout << "So "<<A[i]<<" xuat hien : " << dem << " lan\n";
 }
}

//231 Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng
//VD : 1 1 4 4 4 7 6 19 99 1
// ==> 7 6 19 99
void Liet_Ke_Tan_So_Dung_1_Lan(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  int dem = 0;
  for (int j = 0; j < N; j++)
  {
   if (A[i] == A[j])
   {
    if (j < i)
     break;
    else
     dem++;
   }
  }

  if (dem == 1)
   cout << "So " << A[i] << " xuat hien : " << dem << " lan\n";
 }
}

//232 Hãy liệt kê các giá trị xuất hiện quá 1 lần(mỗi giá trị liệt kê 1 lần)
void Liet_Ke_Tan_So_Qua_1_Lan(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  int dem = 0;
  for (int j = 0; j < N; j++)
  {
   if (A[i] == A[j])
   {
    if (j < i)
     break;
    else
     dem++;
   }
  }

  if (dem > 1)
   cout << "So " << A[i] << " xuat hien : " << dem << " lan\n";
 }
}


//233 Hãy liệt kê tần suất các giá trị xuất hiện trong mảng
// GIỐNG 230

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

 int A[MAX];
 NhapMang(A, N);
 cout << "MANG BAN DAU\n";
 XuatMang(A, N);
 cout << "\n";
 cout << "Bai Tap 230 tan so xuat hien cua cac so : \n";
 Liet_Ke_Tan_So(A, N);

 cout << "\n";
 cout << "Bai Tap 231 tan so xuat hien dung 1 lan : \n";
 Liet_Ke_Tan_So_Dung_1_Lan(A, N);

 cout << "\n";
 cout << "Bai Tap 232 tan so xuat hien qua 1 lan : \n";
 Liet_Ke_Tan_So_Qua_1_Lan(A, N);
 
 return 0;
}

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

Đăng nhận xét