Pascal | Kiểm tra mảng có đối xứng hay không

Pascal | Kiểm tra mảng có đối xứng hay không

Kiểm tra mảng có đối xứng hay không? Kiểm tra mảng có tăng dần hay không?

Mảng đối xứng là mảng có phần tử Ai = AN-i-1

Nếu mảng không phải là mảng tăng dần, hãy sắp xếp nó thành mảng tăng dần.

Ví dụ: Mảng A:          1   15   6   7   4   7   6   15   1

Kết quả:          Mang A doi xung, Mang A khong phai la mang tang dan

Mảng A:          2   5   6   7   14   17   26   26   31

Kết quả:          Mang A khong doi xung, Mang A khong phai la mang tang dan

Hướng dẫn:

+ Xây dựng hàm int KtraDoiXung( A, N ) để kiểm tra tính đối xứng của mảng. Ý tưởng: Giả sử mảng A là mảng đối xứng, sử dụng vòng lặp để tìm kiểm một cặp đối xứng bất kỳ nhưng lại có giá trị không bằng nhau, khi đó trả về là mảng không đối xứng . Ngược lại là không tìm thấy nên mảng là mảng đối xứng .

+ Xây dựng hàm int KtraMangTang( A, N ) để kiểm tra xem mảng A có phải là mảng tăng hay không. Mảng tăng là mảng có các phần tử đứng sau không nhỏ hơn phần tử đứng trước nó. Ý tưởng: Giả sử mảng A là mảng tăng, sử dụng vòng lặp để kiểm tra có tồn tại phần tử nào nhỏ hơn phần tử đứng trước nó hay không, nếu có thì trả về là mảng không không phải là mảng tăng (return 0). Ngược lại là không tìm thấy nên mảng là mảng tăng (return 1).

+ Xây dựng hàm Function SxepMangTang( A, N ) để sắp xếp mảng A thành mảng tăng dần. Ý tưởng: Sử dụng 2 vòng lặp lồng nhau để kiểm tra hai phần tử tại vị trí i, j nếu i < j mà A[i] > A[j] thì hoán đổi giá trị của chúng.

+ Xây dựng  chương trình để thể hiện kết quả đánh giá trên.

Các hàm xây dựng:

{ 1. Ham kiem tra mang doi xung  }

Function KtraDoiXung (A:Mang20; N:Integer ) : Boolean;
Var Flag:Boolean;
      i :Integer;
Begin
        Flag:=True;
        For  i :=1 to N do
              If(A[i] <> A[N-i  +1]) Then
                     Flag :=False;       { Cham dut kiem tra, ket qua qua trinh : khong doi xung }
        KtraDoiXung :=Flag;
End;

{ 2. Ham kiem tra mang tang   }

Function KtraMangTang ( A:Mang20; N :Integer) : Boolean;
Var Flag : Boolean;
      i :Integer;
Begin
       Flag := True;
       For i :=1 to N do
              If(A[i] < A[i-1]) Then
                     Flag :=False;         { Cham dut kiem tra, ket qua qua trinh : khong tang }
       KtraMangTang :=Flag;
End;

{ 3. Thu tuc sap xep mang tang   }

Function  SxepMangTang (A:Mang20; N:Integer ):Integer;
Var i ,j,k :Integer;
Begin
       For i :=1 to N do
              For  j :=1 to N do
                     If ( (i<j) and (A[i] > A[j]) ) then
                     Begin
                            k := A[i];                 { Tien hanh hoan doi gia tri A[i], A[j] }
                            A[i] := A[j];             { cho nhau thong qua bien tam k }
                            A[j] := k;
                     End;
End;

Source code chương trình chính:

BEGIN
       Clrscr;
       NhapMang1C(A, N);                   { Ham nhap xuat khong nhac lai nua }
       XuatMang1C(A, N);                    { Su dung ket qua o truoc }
       If ( KtraDoiXung (A, N ) ) then
              Writeln( ' Mang A doi xung.')
       Else
              Writeln(' Mang A khong doi xung.');
       If ( KtraMangTang (A, N ) ) then
              Writeln( 'Mang A la mang tang ')
       Else
       Begin
              Writeln( 'Mang A khong phai la mang tang. ');
              SxepMangTang( A, N );
              Writeln( 'Ket qua sap sep:');
              XuatMang1C(A, N);
       End;
       Readln;
END .

Mở rộng:

+ Kiểm tra mảng A chỉ chứa toàn những số nguyên tố?

+ Kiểm tra mảng giảm dần, Sắp xếp mảng giảm dần.

+ Sắp xếp mảng A có các số dương tăng dần, các số âm giảm dần.

Function SxepDuongTangAmGiam ( A[]:Mang20,  N:Integer );
Var i ,j ,k:Integer;
Begin
       For i:=1 to N do
              For j:=1 to N  do
                     If ( ( (i<j)and (A[i] > A[j]) and (A[i]>0) and (A[j]>0)) or
                         ((i<j) and ( A[i] < A[j] ) and ( A[i]<0) and ( A[j]<0))) then
                     Begin
                             k := A[i];      { Tien hanh hoan doi gia tri A[i], A[j]}
                            A[i] := A[j];             { thong qua bien tam k }
                            A[j] := k;
                     End;
End;

+ Kiểm tra mảng A là một chuỗi cấp số cộng có công sai k = 5?

Ví dụ: 1   6   11   16   21   26   31

Function KtraMangCapSoCong (A:Mang20;  N:Integer; k:Integer):Boolean;
Var flag :boolean;
       i :Integer;
Begin
       for i:=1 to N do
              if(A[i] < > A[i-1] + k) then
                     flag:=false;                     { Cham dut, ket qua: khong phai}
       KtraMangCapSoCong:=flag; {Ket qua kiem tra la mang cap so cong}
End;
Bạn thấy bài viết này như thế nào?: 
Average: 7.4 (9 votes)
Ảnh của Tommy Tran

Tommy Tran owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy
  • Phone/Zalo: (+84) 944 225 212
  • WhatsApp: (+84) 944 225 212
  • Line Messenger: (+84) 944 225 212
  • Email: asaleotestf@gmail.com
  • Telegram Messenger: https:/t.me/tommytran0401

Quảng cáo việc làm

 

Thích hợp các bạn nữ mảng thợ may làm việc tại nước NGA

Đơn hàng Tuyển dụng 100 Thợ may đi Nga(đợt 1 tháng 3.2021, đợt 2 tháng 5.2021). Lương thực lãnh 800 USD, bao ăn ở, vé máy bay và visa, phí xuất cảnh(1800 USD)trả khi đi làm có lương. Bạn có thể liên hệ CÔNG TY qua Phone/Zalo: (+84) 944 225 212. Công ty sẽ tư vấn cho bạn.

Xem chi tiết: >>> https://bit.ly/3o9NOfR

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Rebuildable và reinstallable Drupal trong phần cài đặt drupal 8

Rebuildable và reinstallable Drupal trong phần cài đặt drupal 8

Configuration management is one of the most useful site development features in Drupal 8

Amazon gia tăng sản xuất Kindle Fire

Amazon gia tăng sản xuất Kindle Fire

Doanh số bán hàng mạnh mẽ của máy tính bảng Kindle Fire đã khiến Amazon phải tăng các đơn đặt hàng của mình, chứng minh rằng mọi người thực sự thích máy tính bảng giá rẻ.

Hướng dẫn cấu hình DNS Server trên Ubuntu Server 11.04

Hướng dẫn cấu hình DNS Server trên Ubuntu Server 11.04

DNS Server là máy chủ có chức năng phân giải tên miền. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết các bước cài đặt và cấu hình DNS Server trên Linux với hệ điều hành Ubuntu Server phiên bản 11.04.