<< Chapter < Page Chapter >> Page >
Mảng

DỮ LIỆU KIỂU MẢNG (ARRAY)

 

 

I. KHAI BÁO MẢNG

Cú pháp:

     TYPE   <Kiểu mảng>= ARRAY [chỉ số] OF<Kiểu dữ liệu>;

     VAR     <Biến mảng>:<Kiểu mảng>;

hoặc khai báo trực tiếp:

     VAR     <Biến mảng>: ARRAY [chỉ số] OF<Kiểu dữ liệu>;

Ví dụ:

     TYPE    Mangnguyen = Array[1..100] of Integer;

                   Matrix = Array[1..10,1..10] of Integer;

                   MangKytu = Array[Byte] of Char;

     VAR      A: Mangnguyen;

                   M: Matrix;

                   C: MangKytu;

hoặc:

     VAR      A: Array[1..100] of Integer;

                   C: Array[Byte] of Char;

 

II. XUẤT NHẬP TRÊN DỮ LIỆU KIỂU MẢNG

     - Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k].

     - Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M[i,j].

     - Có thể sử dụng các thủ tục READ(LN)/WRITE(LN) đối với các phần tử của biến kiểu mảng.

 

BÀI TẬP MẪU

 

Bài tập 1:    Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử.

Ý tưởng:

     - Cho số lớn nhất là số đầu tiên: Max:=a[1].

     - Duyệt qua các phần tử a[i], với i chạy từ 2 tới N: Nếu a[i]>Max thì thay Max:=a[i];

 

Uses Crt;

Type Mang = ARRAY[1..50] Of Integer;

Var  A:Mang;

        N,i,Max:Integer;

Begin

    {Nhập mảng}

    Write(‘Nhap N=’); Readln(N);

    For i:=1 To N Do

        Begin

           Write(‘A[‘,i,’]=’); Readln(A[i]);

        End;

    {Tìm phần tử lớn nhất}

    Max:=A[1];

    For i:=2 To N Do

        If Max<A[i] Then Max:=A[i];

    {In kết quả ra màn hình}

    Writeln(‘Phan tu lon nhat cua mang: ’, Max);

    Readln;

End.

 

Bài tập 2:    Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm N phần tử.

Ý tưởng:

     Duyệt qua tất cả các phần tử A[i] trong mảng: Nếu A[i]<0 thì cộng dồn (A[i])2 vào biến S.

 

Uses Crt;

Type Mang = ARRAY[1..50] Of Integer;

Var  A:Mang;

        N,i,S:Integer;

Begin

    {Nhập mảng}

    Write(‘Nhap N=’); Readln(N);

    For i:=1 To N Do

        Begin

           Write(‘A[‘,i,’]=’); Readln(A[i]);

        End;

    {Tính tổng}

    S:=0;

    For i:=1 To N Do

        If A[i]<0 Then S:=S+A[i]*A[i];

    {In kết quả ra màn hình}

    Writeln(‘S= ’, S);

    Readln;

End.

 

Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình.

Ý tưởng:

     Cho biến i chạy từ 1 đến N-1, đồng thời cho biến j chạy từ i+1 đến N: Nếu A[i]>A[j] thì đổi chổ A[i], A[j].

 

Uses Crt;

Type Mang = ARRAY[1..50] Of Integer;

Var  A:Mang;

        N,i,j,Tam:Integer;

Begin

    {Nhập mảng}

    Write(‘Nhap N=’); Readln(N);

    For i:=1 To N Do

        Begin

           Write(‘A[‘,i,’]=’); Readln(A[i]);

        End;

    {Sắp xếp}

    For i:=1 To N-1 Do

        For j:=i+1 To N Do

           If A[i]>A[j] Then

               Begin

                   Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam;

               End;

    {In kết quả ra màn hình}

    Writeln(‘Ket qua sau khi sap xep:’);

    For i:=1 To N Do Write(A[i]:5);

    Readln;

End.

 

Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Lập trình pascal. OpenStax CNX. Sep 30, 2008 Download for free at http://cnx.org/content/col10585/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Lập trình pascal' conversation and receive update notifications?

Ask