Study Lập Trình

Học lập trình dành cho người mới bắt đầu!

ads

Bài 12. Viết chương trình kiểm tra dãy đối xứng

1. Bài toán

  Yêu cầu: Viết chương trình nhập mảng và kiểm tra mảng vừa nhập có phải là một dãy đối xứng không.
  • Input: Nhập mảng một chiều có các phần tử nguyên
  • Output:In ra màn hình dãy đối xứng hay không

2. Giải thuật:


Bước 1. Nhập thông tin:
  • Bước 1.1. Nhập \(N\);
  • Bước 1.2. Nhập dãy số đã cho \(A_{1}, A_{2}, ..., A_{n}\)
Bước 2. Xử lý:
  • Bước 2.1. Gán biến demcap = 0
  • Bước 2.2. Dùng vòng lặp For chạy từ 1 đến n div 2. Nếu a[i] = a[n-i+1] thì demcap tăng lên 1
  • Bước 2.3. Nếu demcap = n div 2 thì mảng là dãy đối xứng ngược lại thì không đối xứng.
Bước 3. In ra màn hình mảng đối xứng hoặc không đối xứng.

3. Code Pascal:

Program Mang_doi_xung;
Uses crt;
Var N, i, demcap: Integer;
        a: array[1..100] of integer;
Begin
        Clrscr;
        Write('Nhap phan tu cua mang: ');
        Readln(N);
        For i:=1 to N do
                Begin
                        Write('Phan tu thu ',i,' la: ');
                        Readln(a[i]);
                End;
        Writeln('Mang vua nhap la: ');
        For i:=1 to N do write(a[i]:3);
        writeln;
        demcap:=0;
        For i:=1 to (n div 2) do
                If (a[i] = a[n - i + 1]) then demcap:=demcap+1;
        If demcap = n div 2 then write('Mang doi xung')
        else write('Mang khong doi xung');

        Readln;
End.

4. Giải thích code

Dong code Ý nghĩa
Program Mang_doi_xung; Đặt tên chương trình Mang_doi_xung
uses crt; Khai báo các hàm thư viện
Var a: array[1..100] of integer; Khai báo mảng một chiều
Var N, i, demcap: Integer Khai báo biến N(Số phần tử của dãy), i(biến chạy), demcap(đếm cặp các phần tử giống nhau)
clrscr; Xóa màn hình khi chạy chương trình
write('Nhap so luong phan tu cua mang: '); In ra màn hình dòng chữ Nhap so luong phan tu cua day:
readln(N); Nhập từ bàn phím giá trị gán vào biến N
for i:=1 to N do
begin
  write('Phan tu thu ', i,': ');
  readln(a[i]);
end;
Cho i chạy từ 1 đến N làm công việc in các phần tử của dãy ra màn hình.
Writeln('* Mang vua nhap la: '); In ra màn hình dòng "Mang vua nhap la:"
For i:=1 to N do write(a[i]:3); In ra màn hình các phần tử vừa được nhập ở trên
demcap:=0; Gán 0 cho biến demcap
For i:=1 to (n div 2) do
If (a[i] = a[n - i + 1]) then demcap:=demcap+1;
Cho i chạy từ 1 đến phần nguyên của n chia 2 và làm công việc nếu phần tử a[i] = a[n-i+1] (tức so sánh các cặp phần tử vị trí 1 với n; 2 với n-1; 3 với n-2;...) thì biến demcap tăng lên 1
If demcap = n div 2 then write('Mang doi xung')
else write('Mang khong doi xung');
Nếu biến demcap bằng phần nguyên của n chia cho 2 thì in ra câu "Mang doi xung", ngược lại in ra câu "Mang khong doi xung")
Readln; Dừng màn hình cho các bạn xem kết quả.

5. Kết Quả Pascal

Kết luận:
    ▪ Bài này chúng ta sử dụng mảng 1 chiều để xử lý dãy số.
    ▪ Bài này chúng ta lưu ý công thức a[i] = a[n-i+1] nhé. Công thức này dùng để kiểm tra các cặp phần tử có đối xứng hay không.

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

Đăng nhận xét