Thứ Ba, 6 tháng 12, 2016

Bài tập 209 Tổng các ptử đối xứ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";
 }
}


// Hàm Tính Tổng
// 1 Khai báo biến Tổng S = 0
// 2. Duyệt
//  2.1 Nếu
//   Tính tổng
// 3 Trả về tổng

//207 Tổng các ptử cực trị – Cực trị là ptử khi nó lớn hoặc nhỏ hơn ptử xung quanh
// VD : 2 4 6 3 4 1 6 
// ==>  2   6 3 4 1 6 
int Tong_CucTri(int A[], int N)
{
 int S = 0;
 for (int i = 1; i < N - 1; i++)
 {
  // Xét phần tử thứ i
  if ((A[i] > A[i - 1] && A[i] > A[i + 1]) || (A[i] < A[i - 1] && A[i] < A[i + 1]))
   S = S + A[i];
 }

 // Xét phần tử đầu tiên
 if (A[0] > A[1] || A[0] < A[1])
  S += A[0];

 // Xét phần tử cuối cùng
 if (A[N - 1] > A[N - 2] || A[N - 1] < A[N - 2])
  S += A[N - 1];

 return S;
}
//208 Tổng các ptử chính phương
bool KiemTra_SCP(int N)
{
 for (int i = 1; i <= N / 2; i++)
 {
  if (i * i == N)
   return true; // Là số chính phương
 }
 return false;  // Không là số chính phương
}

int Tong_SCP(int A[], int N)
{
 int S = 0;
 for (int i = 0; i < N; i++)
 {
  // Gọi hàm kiểm tra SCP
  bool kq = KiemTra_SCP(A[i]);
  if (kq)
   S += A[i];
 }
 return S;
}

//209 Tổng các ptử đối xứng
// VD : 123 
// ==> 3 ==> 0  * 10 + 3    = 3
// ==> 2 ==> 3  * 10 + 2 = 32
// ==> 1 ==> 32 * 10 + 1 = 321
int SoDaoNguoc(int N)
{
 int sdn = 0;
 while (N > 0)
 {
  int dv = N % 10;
  sdn = sdn * 10 + dv;
  N = N / 10;
 }
 return sdn;
}

// VD :  1 12 121 321 454 
int Tong_SDX(int A[], int N)
{
 int S = 0;
 for (int i = 0; i < N; i++)
 {
  int sdn = SoDaoNguoc(A[i]);
  if (sdn == A[i])
  {
   S += A[i];
  }
 }
 return S;
}


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_207 = Tong_CucTri(A, N);
 cout << "BAI TAP 207 : tong cuc tri = " << kq_207;
 cout << "\n";

 int kq_208 = Tong_SCP(A, N);
 cout << "BAI TAP 208 : tong so chinh phuong = " << kq_208;
 cout << "\n";

 
 int kq_209 = Tong_SDX(A, N);
 cout << "BAI TAP 209 : tong so doi xung = " << kq_209;
 cout << "\n";
 
 cout << "\n";
 return 0;
}

Link Code : http://codepad.org/ve0F5hVe

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

Đăng nhận xét